İngilizce dilinde oku

Aracılığıyla paylaş


Bir Mailslot'a yazma

Mailslot'a yazmak, standart disk dosyasına yazmaya benzer. Aşağıdaki kod, CreateFile, WriteFileve CloseHandle işlevlerini kullanarak posta yuvasına kısa bir mesaj yerleştirir. İleti, yerel bilgisayardaki "sample_mailslot" adlı mailslot sunucusuna yayınlanır. Kod, mailslot sunucusunun zaten oluşturulduğu varsayımı altında çalışır.

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

Aşağıda, bu örnek Mailslotokuma bölümünde gösterilen mailslot sunucusuyla çalıştırıldığında görüntülenen çıktı verilmiştir.

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