Writing to a Mailslot

Writing to a mailslot is similar to writing to a standard disk file. The following code uses the CreateFile, WriteFile, and CloseHandle functions to put a short message in a mailslot. The message is broadcast to every computer in the primary domain of the system.

LPSTR lpszMessage = "Message for sample_mailslot in primary domain.";

BOOL fResult;

HANDLE hFile;

DWORD cbWritten;

hFile = CreateFile("\\\\*\\mailslot\\sample_mailslot",

GENERIC_WRITE,

FILE_SHARE_READ, /* required to write to a mailslot */

(LPSECURITY_ATTRIBUTES) NULL,

OPEN_EXISTING,

FILE_ATTRIBUTE_NORMAL,

(HANDLE) NULL);

if (hFile == INVALID_HANDLE_VALUE) {

ErrorHandler(hwnd, "Primary domain"); /* local error handler */

return FALSE;

}

fResult = WriteFile(hFile,

lpszMessage,

(DWORD) lstrlen(lpszMessage) + 1, /* include terminat. null char. */

&cbWritten,

(LPOVERLAPPED) NULL);

if (!fResult) {

ErrorHandler(hwnd, "WriteFile");

return FALSE;

}

TextOut(hdc, 10, 10, "WriteFile successful.", 21);

fResult = CloseHandle(hFile);

if (!fResult) {

ErrorHandler(hwnd, "CloseHandle");

return FALSE;

}

TextOut(hdc, 10, 30, "CloseHandle successful.", 23);

return TRUE;

Messages broadcast to a domain must be no longer than 400 bytes. Messages that are not broadcast should be smaller than 64 kilobytes. There is no limit to the number of messages that can be sent to a mailslot.