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;

另请参阅

auto_handle

MIDL 基类型

解码

编码

枚举

idempotent

in

对象

out

Ptr

裁判

represent_as

结构

transmit_as

独特

user_marshal

wire_marshal