CreatePipe 함수(namedpipeapi.h)

익명 파이프를 만들고 파이프의 읽기 및 쓰기 끝에 핸들을 반환합니다.

통사론

BOOL CreatePipe(
  [out]          PHANDLE               hReadPipe,
  [out]          PHANDLE               hWritePipe,
  [in, optional] LPSECURITY_ATTRIBUTES lpPipeAttributes,
  [in]           DWORD                 nSize
);

매개 변수

[out] hReadPipe

파이프에 대한 읽기 핸들을 받는 변수에 대한 포인터입니다.

[out] hWritePipe

파이프에 대한 쓰기 핸들을 받는 변수에 대한 포인터입니다.

[in, optional] lpPipeAttributes

반환된 핸들을 자식 프로세스에서 상속할 수 있는지 여부를 결정하는 SECURITY_ATTRIBUTES 구조체에 대한 포인터입니다. lpPipeAttributes NULL경우 핸들을 상속할 수 없습니다.

구조체의 lpSecurityDescriptor 멤버는 새 파이프에 대한 보안 설명자를 지정합니다. lpPipeAttributes NULL경우 파이프는 기본 보안 설명자를 가져옵니다. 파이프에 대한 기본 보안 설명자의 ACL은 작성자의 기본 또는 가장 토큰에서 가져옵니다.

[in] nSize

파이프의 버퍼 크기(바이트)입니다. 크기는 제안일 뿐입니다. 시스템은 이 값을 사용하여 적절한 버퍼링 메커니즘을 계산합니다. 이 매개 변수가 0이면 시스템에서 기본 버퍼 크기를 사용합니다.

반환 값

함수가 성공하면 반환 값은 0이 아닌 값입니다.

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 얻으려면 GetLastError호출합니다.

발언

CreatePipe 지정된 파이프 크기를 스토리지 버퍼에 할당하여 파이프를 만듭니다. CreatePipeReadFile 및 WriteFile 함수에 대한 후속 호출에서 프로세스에서 읽고 버퍼에 쓰는 데 사용하는 핸들도 만듭니다.

파이프에서 읽기를 위해 프로세스는 ReadFile 함수에 대한 호출에서 읽기 핸들을 사용합니다. ReadFile 다음 중 하나가 true이면 반환됩니다. 파이프의 쓰기 끝에서 쓰기 작업이 완료되거나 요청된 바이트 수가 읽혀지거나 오류가 발생합니다.

프로세스에서 WriteFile 사용하여 익명 파이프에 쓰는 경우 모든 바이트를 쓸 때까지 쓰기 작업이 완료되지 않습니다. 모든 바이트를 쓰기 전에 파이프 버퍼가 가득 차면 다른 프로세스 또는 스레드가 ReadFile 사용하여 더 많은 버퍼 공간을 사용할 수 있도록 할 때까지 WriteFile 반환되지 않습니다.

익명 파이프는 고유한 이름의 명명된 파이프를 사용하여 구현됩니다. 따라서 명명된 파이프에 대한 핸들이 필요한 함수에 익명 파이프에 핸들을 전달할 수 있습니다.

CreatePipe 실패하면 출력 매개 변수의 내용이 확정되지 않습니다. 이 이벤트에서 해당 내용에 대해 가정해서는 안 됩니다.

파이프에서 사용하는 리소스를 해제하려면 애플리케이션은 더 이상 필요하지 않을 때 항상 핸들을 닫아야 합니다. 이 작업은 CloseHandle 함수를 호출하거나 인스턴스 핸들과 연결된 프로세스가 종료될 때 수행됩니다. 파이프 인스턴스에는 둘 이상의 핸들이 연결되어 있을 수 있습니다. 파이프 인스턴스는 명명된 파이프 인스턴스에 대한 마지막 핸들이 닫혀 있을 때 항상 삭제됩니다.

예제

예를 들어 리디렉션된 입력 및 출력사용하여 자식 프로세스 만들기를 참조하세요.

요구 사항

요구 값
지원되는 최소 클라이언트 Windows 2000 Professional [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows 2000 Server [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 namedpipeapi.h
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

파이프 함수

파이프 개요

ReadFile

SECURITY_ATTRIBUTES

WriteFile