寫入 Mailslot
寫入 mailslot 類似于寫入標準磁片檔案。 下列程式碼會使用 CreateFile、 WriteFile和 CloseHandle 函式,將簡短訊息放在 mailslot 中。 郵件會廣播到本機電腦上的 「sample_mailslot」 郵件圖伺服器。 程式碼會根據已建立 mailslot 伺服器的假設運作。
#include <windows.h>
#include <stdio.h>
LPCTSTR SlotName = TEXT("\\\\.\\mailslot\\sample_mailslot");
BOOL WriteSlot(HANDLE hSlot, LPCTSTR lpszMessage)
{
BOOL fResult;
DWORD cbWritten;
fResult = WriteFile(hSlot,
lpszMessage,
(DWORD) (lstrlen(lpszMessage)+1)*sizeof(TCHAR),
&cbWritten,
(LPOVERLAPPED) NULL);
if (!fResult)
{
printf("WriteFile failed with %d.\n", GetLastError());
return FALSE;
}
printf("Slot written to successfully.\n");
return TRUE;
}
int main()
{
HANDLE hFile;
hFile = CreateFile(SlotName,
GENERIC_WRITE,
FILE_SHARE_READ,
(LPSECURITY_ATTRIBUTES) NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
(HANDLE) NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
printf("CreateFile failed with %d.\n", GetLastError());
return FALSE;
}
WriteSlot(hFile, TEXT("Message one for mailslot."));
WriteSlot(hFile, TEXT("Message two for mailslot."));
Sleep(5000);
WriteSlot(hFile, TEXT("Message three for mailslot."));
CloseHandle(hFile);
return TRUE;
}
以下是執行此範例時所顯示的輸出,其中包含 從 Mailslot 讀取中顯示的 mailslot伺服器。
Slot written to successfully.
Slot written to successfully.
Slot written to successfully.