Mailslot 만들기
Mailslot은 CreateMailslot, GetMailslotInfo 및 SetMailslotInfo의 세 가지 특수 함수에서 지원 됩니다. 이러한 함수는 mailslot 서버에서 사용됩니다.
다음 코드 샘플에서는 CreateMailslot 함수를 사용하여 "sample_mailslot"이라는 mailslot에 대한 핸들을 검색합니다. Mailslot에 쓰기의 코드 샘플은 클라이언트 애플리케이션이 이 mailslot에 쓸 수 있는 방법을 보여 줍니다.
#include <windows.h>
#include <stdio.h>
HANDLE hSlot;
LPCTSTR SlotName = TEXT("\\\\.\\mailslot\\sample_mailslot");
BOOL WINAPI MakeSlot(LPCTSTR lpszSlotName)
{
hSlot = CreateMailslot(lpszSlotName,
0, // no maximum message size
MAILSLOT_WAIT_FOREVER, // no time-out for operations
(LPSECURITY_ATTRIBUTES) NULL); // default security
if (hSlot == INVALID_HANDLE_VALUE)
{
printf("CreateMailslot failed with %d\n", GetLastError());
return FALSE;
}
else printf("Mailslot created successfully.\n");
return TRUE;
}
void main()
{
MakeSlot(SlotName);
}
자식 프로세스에서 상속할 수 있는 mailslot을 만들려면 애플리케이션에서 CreateMailslot의 마지막 매개 변수로 전달된 SECURITY_ATTRIBUTES 구조를 변경해야 합니다. 이를 위해 애플리케이션은 이 구조체의 bInheritHandle 멤버를 TRUE 로 설정합니다(기본 설정은 FALSE).