CreateMailslotA 함수(winbase.h)
지정된 이름의 mailslot을 만들고 mailslot 서버가 mailslot에서 작업을 수행하는 데 사용할 수 있는 핸들을 반환합니다. mailslot은 해당 메일을 만드는 컴퓨터에 로컬입니다. 지정된 이름의 mailslot이 이미 있는 경우 오류가 발생합니다.
구문
HANDLE CreateMailslotA(
[in] LPCSTR lpName,
[in] DWORD nMaxMessageSize,
[in] DWORD lReadTimeout,
[in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
매개 변수
[in] lpName
mailslot의 이름입니다. 이 이름은 다음과 같은 형식이어야 합니다.
\\.\mailslot\[path]name
이름 필드는 고유해야 합니다. 이름에는 백슬라이시로 구분된 여러 수준의 의사 디렉터리를 포함할 수 있습니다. 예를 들어 \\.\mailslot\example_mailslot_name 및 \\.\mailslot\abc\def\ghi 모두 유효한 이름입니다.
[in] nMaxMessageSize
mailslot에 쓸 수 있는 단일 메시지의 최대 크기(바이트)입니다. 메시지가 임의의 크기일 수 있도록 지정하려면 이 값을 0으로 설정합니다.
[in] lReadTimeout
시간 초과가 발생하기 전에 읽기 작업이 mailslot에 메시지를 쓸 때까지 대기할 수 있는 시간(밀리초)입니다. 다음 값에는 특별한 의미가 있습니다.
값 | 의미 |
---|---|
|
메시지가 없으면 즉시 를 반환합니다. (시스템은 즉각적인 반환을 오류로 처리하지 않습니다.) |
|
메시지를 영원히 기다립니다. |
이 제한 시간 값은 모든 후속 읽기 작업 및 상속된 모든 mailslot 핸들에 적용됩니다.
[in, optional] lpSecurityAttributes
SECURITY_ATTRIBUTES 구조체에 대한 포인터입니다. 구조체의 bInheritHandle 멤버는 반환된 핸들을 자식 프로세스에서 상속할 수 있는지 여부를 결정합니다. lpSecurityAttributes가 NULL이면 핸들을 상속할 수 없습니다.
반환 값
함수가 성공하면 반환 값은 서버 mailslot 작업에 사용하기 위해 mailslot에 대한 핸들입니다. 이 함수에서 반환된 핸들은 비동기식이거나 겹칩니다.
함수가 실패하는 경우 반환 값은 INVALID_HANDLE_VALUE입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.
설명
mailslot은 다음 조건 중 하나가 충족될 때까지 존재합니다.
- CloseHandle 함수를 사용하여 마지막(상속되거나 중복된) 핸들이 닫힙니다.
- 마지막(상속되거나 중복된) 핸들 종료를 소유하는 프로세스입니다.
mailslot에 메시지를 쓰려면 프로세스에서 CreateFile 함수를 사용하여 다음 형식 중 하나를 사용하여 mailslot 이름을 지정합니다.
서식 | 사용량 |
---|---|
\\.\mailslot\name | 로컬 mailslot에 대한 클라이언트 핸들을 검색합니다. |
\\computername\mailslot\name | 원격 mailslot에 대한 클라이언트 핸들을 검색합니다. |
\\domainname\mailslot\name | 지정된 도메인에서 지정된 이름을 가진 모든 mailslot에 대한 클라이언트 핸들을 검색합니다. |
\\*\mailslot\name | 시스템의 기본 도메인에서 지정된 이름을 가진 모든 mailslot에 대한 클라이언트 핸들을 검색합니다. |
CreateFile이 도메인을 지정하거나 별표 형식을 사용하여 시스템의 기본 도메인을 지정하는 경우 애플리케이션은 mailslot에 한 번에 424바이트 이상을 쓸 수 없습니다. 애플리케이션이 이를 시도하면 WriteFile 함수가 실패하고 GetLastError가ERROR_BAD_NETPATH 반환합니다.
CreateFile을 사용하여 mailslot에 대한 클라이언트 핸들을 검색할 때 애플리케이션은 FILE_SHARE_READ 플래그를 지정해야 합니다.
존재하지 않는 mailslot에 액세스하기 위해 CreateFile 을 호출하면 ERROR_FILE_NOT_FOUND 오류 코드가 설정됩니다.
예제
예를 들어 Mailslot 만들기를 참조하세요.
참고
winbase.h 헤더는 CREATEMailslot을 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | winbase.h(Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |