다음을 통해 공유


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 지정된 파이프 크기를 스토리지 버퍼에 할당하여 파이프를 만듭니다. CreatePipeReadFileWriteFile 함수에 대한 후속 호출에서 프로세스에서 읽고 버퍼에 쓰는 데 사용하는 핸들도 만듭니다.

파이프에서 읽기를 위해 프로세스는 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