Platform SDK: Interprocess Communications |
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 to 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 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).