Share via


CreateMailslotW 함수(winbase.h)

지정된 이름의 mailslot을 만들고 mailslot 서버가 mailslot에서 작업을 수행하는 데 사용할 수 있는 핸들을 반환합니다. mailslot은 만드는 컴퓨터의 로컬입니다. 지정된 이름의 mailslot이 이미 있는 경우 오류가 발생합니다.

구문

HANDLE CreateMailslotW(
  [in]           LPCWSTR               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에 쓸 때까지 대기할 수 있는 시간(밀리초)입니다. 다음 값에는 특별한 의미가 있습니다.

의미
0
메시지가 없으면 즉시 를 반환합니다. (시스템은 즉각적인 반환을 오류로 처리하지 않습니다.)
MAILSLOT_WAIT_FOREVER
((DWORD)-1)
메시지를 영원히 기다립니다.
 

이 제한 시간 값은 모든 후속 읽기 작업 및 상속된 모든 mailslot 핸들에 적용됩니다.

[in, optional] lpSecurityAttributes

SECURITY_ATTRIBUTES 구조체에 대한 포인터입니다. 구조체의 bInheritHandle 멤버는 반환된 핸들을 자식 프로세스에서 상속할 수 있는지 여부를 결정합니다. lpSecurityAttributesNULL이면 핸들을 상속할 수 없습니다.

반환 값

함수가 성공하면 반환 값은 서버 mailslot 작업에 사용하기 위해 mailslot에 대한 핸들입니다. 이 함수에서 반환된 핸들은 비동기적이거나 겹칩니다.

함수가 실패하는 경우 반환 값은 INVALID_HANDLE_VALUE입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

mailslot은 다음 조건 중 하나가 충족될 때까지 존재합니다.

  • 마지막으로 상속되거나 중복된 핸들은 CloseHandle 함수를 사용하여 닫힙니다.
  • 마지막(상속되거나 중복된) 핸들을 소유하는 프로세스가 종료됩니다.
시스템은 두 번째 메서드를 사용하여 mailslots를 삭제합니다.

mailslot에 메시지를 쓰려면 프로세스에서 CreateFile 함수를 사용하여 다음 형식 중 하나를 사용하여 mailslot 이름을 지정합니다.

서식 사용량
\\.\mailslot\name 로컬 mailslot에 대한 클라이언트 핸들을 검색합니다.
\\computername\mailslot\name 원격 메일 슬롯에 대한 클라이언트 핸들을 검색합니다.
\\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

참고 항목

CloseHandle

CreateFile

GetMailslotInfo

Mailslot 함수

Mailslots 개요

SECURITY_ATTRIBUTES

SetMailslotInfo

WriteFile