context_handle_serialize 属性

[context_handle_serialize] ACF 属性保证无论应用程序的默认行为如何,上下文句柄都将始终序列化。

typedef [context_handle_serialize [ , type-acf-attribute-list ] ] context-handle-type;

[context_handle_serialize [, function-acf-attribute-list ] ] function-name( );

function-name(
    [context_handle_serialize [ , parameter-acf-attribute-list ] ] param-name );

parameters

type-acf-attribute-list

应用于该类型的任何其他 ACF 属性。

context-handle-type

指定上下文句柄类型的标识符,如 typedef 声明中定义。 这是在 IDL 文件中接收 [context_handle_serialize] 属性的类型。

function-acf-attribute-list

应用于函数的任何其他 ACF 属性。

function-name

IDL 文件中定义的函数的名称。

parameter-acf-attribute-list

应用于 参数的任何其他 ACF 属性。

param-name

IDL 文件中定义的参数的名称。

备注

[context_handle_serialize] 属性标识一个绑定句柄,该句柄在远程过程调用之间维护服务器上的上下文或状态信息。 该特性可以显示为 IDL typedef 类型属性、函数返回类型属性或参数属性。

默认情况下,对上下文句柄的调用是序列化的,但应用程序可以调用 RpcSsDontSerializeContext 来替代此默认行为。 在 ACF 文件中使用 [context_handle_serialize] 属性可确保对此特定上下文句柄的调用进行序列化,即使调用应用程序已重写默认序列化也是如此。 上下文失事例程是可选的。

此属性在 MIDL 版本 5.0 中可用。

Windows Server 2003 和 Windows XP 或更高版本: 单个接口可以同时容纳序列化和非序列化的上下文句柄,使接口上的一种方法能够访问以独占方式 (序列化) 的上下文句柄,而其他方法在共享模式下访问该上下文句柄 (非序列化) 。 这些访问功能与读/写锁定机制相当;使用序列化上下文句柄的方法是独占用户 (编写器) ,而使用非序列化上下文句柄的方法是共享用户 (读取者) 。 必须序列化销毁或修改上下文句柄状态的方法。 不修改上下文句柄状态的方法(例如那些只是从上下文句柄读取的方法)可以进行非序列化。 请注意,创建方法是隐式序列化的。

示例

typedef [context_handle_serialize] PCONTEXT_HANDLE_TYPE; 
HRESULT RemoteFunc([context_handle_serialize] pCxHandle);

另请参阅

应用程序配置文件 (ACF)

ACF 属性

context_handle_noserialize

context_handle

上下文句柄

RpcSsDontSerializeContext

服务器上下文运行例程

多线程客户端和上下文句柄

typedef