Mailslot の作成

Mailslot は、CreateMailslot、GetMailslotInfoSetMailslotInfo の 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 です)。