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 구조체에 대한 포인터입니다.
구조체의 lpSecurityDescriptor 멤버는 새 파이프에 대한 보안 설명자를 지정합니다.
[in] nSize
파이프의 버퍼 크기(바이트)입니다. 크기는 제안일 뿐입니다. 시스템은 이 값을 사용하여 적절한 버퍼링 메커니즘을 계산합니다. 이 매개 변수가 0이면 시스템에서 기본 버퍼 크기를 사용합니다.
반환 값
함수가 성공하면 반환 값은 0이 아닌 값입니다.
함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 얻으려면 GetLastError호출합니다.
발언
CreatePipe 지정된 파이프 크기를 스토리지 버퍼에 할당하여 파이프를 만듭니다. CreatePipeReadFile 및 WriteFile 함수에 대한 후속 호출에서 프로세스에서 읽고 버퍼에 쓰는 데 사용하는 핸들도 만듭니다.
파이프에서 읽기를 위해 프로세스는 ReadFile 함수에 대한 호출에서 읽기 핸들을 사용합니다. ReadFile 다음 중 하나가 true이면 반환됩니다. 파이프의 쓰기 끝에서 쓰기 작업이 완료되거나 요청된 바이트 수가 읽혀지거나 오류가 발생합니다.
프로세스에서 WriteFile 사용하여 익명 파이프에 쓰는 경우 모든 바이트를 쓸 때까지 쓰기 작업이 완료되지 않습니다. 모든 바이트를 쓰기 전에 파이프 버퍼가 가득 차면 다른 프로세스 또는 스레드가
익명 파이프는 고유한 이름의 명명된 파이프를 사용하여 구현됩니다. 따라서 명명된 파이프에 대한 핸들이 필요한 함수에 익명 파이프에 핸들을 전달할 수 있습니다.
CreatePipe 실패하면 출력 매개 변수의 내용이 확정되지 않습니다. 이 이벤트에서 해당 내용에 대해 가정해서는 안 됩니다.
파이프에서 사용하는 리소스를 해제하려면 애플리케이션은 더 이상 필요하지 않을 때 항상 핸들을 닫아야 합니다. 이 작업은 CloseHandle 함수를 호출하거나 인스턴스 핸들과 연결된 프로세스가 종료될 때 수행됩니다. 파이프 인스턴스에는 둘 이상의 핸들이 연결되어 있을 수 있습니다. 파이프 인스턴스는 명명된 파이프 인스턴스에 대한 마지막 핸들이 닫혀 있을 때 항상 삭제됩니다.
예제
예를 들어 리디렉션된 입력 및 출력사용하여 자식 프로세스 만들기를 참조하세요.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows 2000 Server [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | namedpipeapi.h |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |
참고 항목
파이프 함수
ReadFile
WriteFile