pipe 属性
使用 管道 类型构造函数可以跨远程过程调用传输类型化数据的开放式流。
typedef pipe element-type pipe-declarator;
-
element-type
-
定义传输缓冲区中单个元素的大小。 元素类型可以是基类型、predefined_type、结构、32b 枚举或类型标识符。 以下备注中所述, element_types存在一些限制。
-
pipe-declarator
-
指定一个或多个标识符或指向标识符的指针。 用逗号分隔多个声明符。
可以使用 管道 类型构造函数双向传输数据。 [in] 管道参数允许服务器在远程过程调用期间从客户端拉取数据流。 [out] 管道参数允许服务器将数据流推送回客户端。 提供客户端例程来推送和拉取数据流,并为数据分配全局缓冲区。 客户端和服务器存根例程封送和取消封送数据,并将对缓冲区的引用传递回应用程序。
以下限制适用于管道:
- 管道元素不能是或包含指针、一致数组或可变数组、句柄或上下文句柄。 此外,在管道的 Microsoft 实现中,管道元素不能或包含 联合、 16b 枚举或 __int3264。
- 不能将 [transmit_as]、 [represent_as]、 [wire_marshal]或 [user_marshal] 属性应用于管道类型或 元素类型。
- 管道类型不能是结构或联合的成员、指针的目标或数组的基类型。
- 声明为管道类型的数据类型只能用作远程调用的参数。
- 可以按值或引用 [ref] 指针) (向传递管道参数。 但是,不能将 [ptr] 属性应用于通过引用传递的管道。 无论方向如何,都不能指定具有 [unique] 或完整指针的管道参数。
- 不能在 [object] 接口中使用管道。
- 不能将 [幂等] 属性应用于具有管道参数的例程。
- 不能将序列化属性 [encode] 和 [decode] 与管道一起使用。
- 默认情况下,不能使用自动句柄,也不能将 [auto_handle] 属性与管道配合使用。
备注
MIDL 编译器仅支持 /Oif 模式下的管道。
有关使用管道参数实现例程的详细信息,请参阅 RPC 程序员指南和参考中的 管道 。
typedef pipe unsigned char UCHAR_PIPE1, UCHAR_PIPE2;
//SIMPLE_STRUCT defined elsewhere
typedef pipe SIMPLE_STRUCT SIMPLE_STRUCT_PIPE;