Schreiben in ein Mailslot

Das Schreiben in ein E-Mail-Lot ähnelt dem Schreiben in eine Standarddatenträgerdatei. Im folgenden Code werden die Funktionen CreateFile, WriteFileund CloseHandle verwendet, um eine kurze Nachricht in einem Mailslot zu speichern. Die Nachricht wird an den Maillotserver mit dem Namen "sample _ mailslot" auf dem lokalen Computer übertragen. Der Code wird unter der Annahme ausgeführt, dass der Maillotserver bereits erstellt wurde.

#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;
}

Im Folgenden finden Sie die Ausgabe, die angezeigt wird, wenn dieses Beispiel mit dem in Lesen aus einem Mailslot gezeigten Mailslotserver ausgeführt wird.

Slot written to successfully.
Slot written to successfully.
Slot written to successfully.