Mailslots は、CreateMailslot、GetMailslotInfo、および SetMailslotInfoの 3 つの特殊な関数でサポートされています。 これらの関数は、mailslot サーバーによって使用されます。
次のコード サンプルでは、CreateMailslot 関数を使用して、"sample_mailslot" という名前の mailslot へのハンドルを取得します。 Mailslot への書き込み のコード サンプルは、クライアント アプリケーションがこの mailslot に書き込む方法を示しています。
#include <windows.h>
#include <stdio.h>
HANDLE hSlot;
LPCTSTR SlotName = TEXT("\\\\.\\mailslot\\sample_mailslot");
BOOL WINAPI MakeSlot(LPCTSTR lpszSlotName)
{
hSlot = CreateMailslot(lpszSlotName,
0, // no maximum message size
MAILSLOT_WAIT_FOREVER, // no time-out for operations
(LPSECURITY_ATTRIBUTES) NULL); // default security
if (hSlot == INVALID_HANDLE_VALUE)
{
printf("CreateMailslot failed with %d\n", GetLastError());
return FALSE;
}
else printf("Mailslot created successfully.\n");
return TRUE;
}
void main()
{
MakeSlot(SlotName);
}
子プロセスによって継承できる mailslot を作成するには、アプリケーションで、CreateMailslotの最後のパラメーターとして渡される SECURITY_ATTRIBUTES 構造変更する必要があります。 これを行うには、アプリケーションは、この構造体の bInheritHandle メンバーを TRUE を に設定します (既定の設定は FALSE)。