파이프 특성
파이프 형식 생성자를 사용하면 원격 프로시저 호출을 통해 형식화된 데이터의 개방형 스트림을 전송할 수 있습니다.
typedef pipe element-type pipe-declarator;
-
element-type
-
전송 버퍼에서 단일 요소의 크기를 정의합니다. 요소 형식은 기본 형식, predefined_type, 구조체, 32b 열거형 또는 형식 식별자일 수 있습니다. 아래 설명에 설명된 대로 element_types 몇 가지 제한 사항이 적용됩니다.
-
파이프 선언자
-
식별자에 대한 하나 이상의 식별자 또는 포인터를 지정합니다. 여러 선언자를 쉼표로 구분합니다.
파이프 형식 생성자를 사용하여 양방향으로 데이터를 전송할 수 있습니다. [in] 파이프 매개 변수를 사용하면 서버가 원격 프로시저 호출 중에 클라이언트에서 데이터 스트림을 끌어올 수 있습니다. [out] 파이프 매개 변수를 사용하면 서버가 데이터 스트림을 클라이언트로 다시 푸시할 수 있습니다. 클라이언트 쪽 루틴을 제공하여 데이터 스트림을 푸시 및 풀하고 데이터에 대한 전역 버퍼를 할당합니다. 클라이언트 및 서버 스텁 루틴은 데이터를 마샬링 및 마샬링 해제하고 버퍼에 대한 참조를 애플리케이션에 다시 전달합니다.
파이프에 적용되는 제한 사항은 다음과 같습니다.
- 파이프 요소는 포인터, 규칙적 또는 다양한 배열, 핸들 또는 컨텍스트 핸들을 포함하거나 포함할 수 없습니다. 또한 파이프의 Microsoft 구현에서 파이프 요소는 공용 구조체, 16b 열거형 또는 __int3264 포함할 수 없습니다.
- [transmit_as], [represent_as], [wire_marshal] 또는 [user_marshal] 특성을 파이프 형식 또는 요소 형식에 적용할 수 없습니다.
- 파이프 형식은 구조체 또는 공용 구조체의 멤버, 포인터의 대상 또는 배열의 기본 형식일 수 없습니다.
- 파이프 형식으로 선언된 데이터 형식은 원격 호출의 매개 변수로만 사용할 수 있습니다.
- 파이프 매개 변수를 값 또는 참조([ref] 포인터로 어느 방향으로든 전달할 수 있습니다. 그러나 참조로 전달되는 파이프에는 [ptr] 특성을 적용할 수 없습니다. 방향에 관계없이 [고유] 또는 전체 포인터를 사용하여 파이프 매개 변수를 지정할 수 없습니다.
- [개체] 인터페이스에서는 파이프를 사용할 수 없습니다.
- 파이프 매개 변수가 있는 루틴에는 [idempotent] 특성을 적용할 수 없습니다.
- 직렬화 특성인 [인코딩] 및 [디코딩] 을 파이프와 함께 사용할 수 없습니다.
- 자동 핸들은 기본적으로 사용하거나 파이프와 함께 [auto_handle] 특성과 함께 사용할 수 없습니다.
참고
MIDL 컴파일러는 /Oif 모드에서만 파이프를 지원합니다.
파이프 매개 변수를 사용하여 루틴을 구현하는 방법에 대한 자세한 내용은 RPC 프로그래머 가이드 및 참조의 파이프 를 참조하세요.
typedef pipe unsigned char UCHAR_PIPE1, UCHAR_PIPE2;
//SIMPLE_STRUCT defined elsewhere
typedef pipe SIMPLE_STRUCT SIMPLE_STRUCT_PIPE;