HANDLE WINAPI CreateMailslot(
__in LPCTSTR lpName,
__in DWORD nMaxMessageSize,
__in DWORD lReadTimeout,
__in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
수신인이 데이터를 받을 우체통을 생성할 때 사용하는 함수
lpName : 생성하는 메일슬롯의 이름을 결정하는데 사용
주소를 지정하는 것이라고 생각하면 된다. 메일슬롯은 우체통.
주소의 기본 형식 : \\computername\mailslot\[path]name
nMaxMessageSize : 메일슬롯의 버퍼 크기를 지정하는데 사용.
우체통의 크기를 지정하는데 사용되는 인자
만약에 0이 전달될 경우 시스템이 허용하는 최대 크기
lReadTimeout : 메일슬롯을 통해 전송된 데이터를 읽기 위해서 파일 입.출력 함수인 ReadFile함수가 사용된다.
메일슬롯으로부터 읽어 들일 데이터가 있다면, 이 데이터들을 읽어 들이면서 ReadFile함수를 빠져나옴.
그러나 메일슬롯이 비어 있다면 데이터가 채워질 때까지 ReadFile함수는 반환하지 않고 블로킹상태에
놓이게 된다. lReadTimeout은 최대 블로킹 시간을 밀리세컨드 단위로 지정하는데 사용
0 - 데이터가 있든 없든 그냥 실행
MAILSLOT_WAIT_FOREVER - ReadFile함수는 읽어 들일 데이터가 존재하게 될 때까지 블로킹 상태
lpSecurityAttributes : 핸들을 상속하기 위한 용도
NULL이 전달되면 생성되는 메일슬롯의 핸들은 자식 프로세스에게 상속되지 않는다.
LPSECURITY_ATTRIBUTES구조체
typedef struct _SECURITY_ATTRIBUTES {
DWORD nLength;
LPVOID lpSecurityDescriptor;
BOOL bInheritHandle;
} SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
nLength : 구조체 변수 크기를 바이트 단위로 설정. 반드시 구조체 변수 크기로 초기화해야 함
lpSecurityDescriptor : 일단은 NULL
bInheritHandle : TRUE로 하면 다른 프로세스가 해당 리소스의 핸들을 상속 가능
'My Study > Function' 카테고리의 다른 글
CreatePipe (0) | 2010.02.24 |
---|---|
DuplicateHandle (0) | 2010.02.24 |
SHGetSpecialFolderPath (0) | 2010.02.24 |
GetModuleFileName (0) | 2010.02.24 |
CopyFile (0) | 2010.02.24 |