type_UserUnmarshal 函数

<type>_UserUnmarshal 函数是 [ wire_marshal] 和 [ user_marshal] 属性的帮助程序函数。 存根调用此函数,以在客户端或服务器端取消封存数据。 函数定义为:

unsigned char __RPC_FAR * __RPC_USER  <type>_UserUnmarshal(
    unsigned long __RPC_FAR * pFlags,
    unsigned char __RPC_FAR * pBuffer,
    <type>  __RPC_FAR *       pMyObj);

<函数名称中的类型>表示 [wire_marshal][user_marshal] 类型定义中指定的 userm 类型。 此类型可能是不可传输的,甚至(与 [user_marshal] 属性一起使用时)对 MIDL 编译器而言未知。 函数原型中不使用可传输类型名称 () 的线路类型名称。 但请注意,线路类型定义 OSF DCE 指定的数据的线路布局。

pFlags 参数是指向无符号长标志字段的指针。 标志的上字包含 OSF DCE 为浮点、字节顺序和字符表示形式定义的 NDR 数据表示标志。 下部单词包含 COM 通道定义的封送上下文标志。 type_UserSize 函数中介绍了字段中标志的确切布局。

pBuffer 参数是当前缓冲区指针。 此指针可能会在条目上对齐,也可能不对齐。 类型<>_UserUnmarshal函数应适当对齐缓冲区指针,取消数据封送,并返回新的缓冲区位置,即未封送对象后的第一个字节的地址。

pMyObj 参数是指向用户定义的类型对象的指针。

在异类环境中,NDR 引擎在调用 <类型>_UserUnmarshal 函数之前执行所需的任何数据转换。 请注意,NDR 引擎根据为此用户数据类型提供的线路类型定义执行此数据转换。 标志指示发送方的数据表示形式。

user_marshal和wire_marshal封送规则

wire_marshal

user_marshal