Platform SDK: Interprocess Communications

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 terminating null 
    &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;