过程序列化

使用过程序列化时,过程将使用 [encode] 或 [decode] 属性进行标记。 编译器为例程生成序列化存根,而不是生成通常的远程存根。

正如远程过程必须使用绑定句柄进行远程调用一样,序列化过程必须使用序列化句柄才能使用序列化服务。 如果未指定序列化句柄,则使用默认隐式句柄来定向调用。 另一方面,如果指定序列化句柄(作为例程的显式 handle_t 参数或使用 [explicit_handle] 属性,则必须传递有效的句柄作为调用的参数。 有关如何创建有效序列化句柄的其他信息,请参阅 序列化句柄固定缓冲区编码示例增量编码示例

注意

Microsoft RPC 允许将远程和序列化过程混合在一个接口中。 但是,执行此操作时请谨慎。

对于具有隐式绑定句柄的远程过程,MIDL 编译器会生成 handle_t 类型的全局句柄变量。 具有隐式序列化句柄的过程和类型使用相同的全局句柄变量。

对于隐式句柄,在远程调用之前,必须将全局隐式句柄设置为有效的绑定句柄。 在序列化调用之前,必须将隐式句柄设置为有效的序列化句柄。 因此,过程不能同时进行远程和序列化。 它必须是一个或另一个。