Mailslots are supported by three specialized functions: CreateMailslot, GetMailslotInfo, and SetMailslotInfo. These functions are used by the mailslot server.
The following code sample uses the CreateMailslot function to retrieve the handle of a mailslot named sample_mailslot.
BOOL FAR PASCAL Makeslot(HWND hwnd, HDC hdc)
{
LPSTR lpszSlotName = "\\\\.\\mailslot\\sample_mailslot";
/* The mailslot handle "hSlot1" is declared globally. */
hSlot1 = CreateMailslot(lpszSlotName,
0, /* no maximum message size */
MAILSLOT_WAIT_FOREVER, /* no time-out for read operations */
(LPSECURITY_ATTRIBUTES) NULL); /* no security attributes */
if (hSlot1 == INVALID_HANDLE_VALUE) {
ErrorHandler(hwnd, "CreateMailslot"); /* local error handler */
return FALSE;
}
TextOut(hdc, 10, 10, "CreateMailslot successful.", 26);
return TRUE;
}
To create a mailslot that can be inherited by child processes, an application should change the SECURITY_ATTRIBUTES structure passed as the last parameter of CreateMailslot. To do this, the application sets the bInheritHandle member of this structure to TRUE (the default setting is FALSE).