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);
另请参阅