context_handle_noserialize 属性
[context_handle_noserialize] ACF 属性保证无论应用程序的默认行为如何,都不会序列化上下文句柄。
typedef [context_handle_noserialize [ , type-acf-attribute-list ] ] context-handle-type
[context_handle_noserialize [, function-acf-attribute-list ] ] function-name( );
function-name ( [context_handle_noserialize
[ , parameter-acf-attribute-list ] ] param-name );
parameters
-
type-acf-attribute-list
-
应用于该类型的任何其他 ACF 属性。
-
context-handle-type
-
指定上下文句柄类型的标识符,如 typedef 声明中定义。 这是接收 IDL 文件中 的 [context_handle] 属性的类型。
-
function-acf-attribute-list
-
应用于函数的任何其他 ACF 属性。
-
function-name
-
IDL 文件中定义的函数的名称。
-
parameter-acf-attribute-list
-
应用于 参数的任何其他 ACF 属性。
-
param-name
-
IDL 文件中定义的参数的名称。
备注
[context_handle] 属性标识一个绑定句柄,该句柄在远程过程调用之间维护服务器上的上下文或状态信息。 该特性可以显示为 IDL typedef 类型属性、函数返回类型属性或参数属性。
默认情况下,对上下文句柄的调用进行序列化。 应用程序可以调用 RpcSsDontSerializeContext 来替代此默认行为。 在 ACF 文件中使用 [context_handle] 属性可确保无论调用应用程序的行为如何,此特定上下文句柄上的调用都不会序列化。 提供上下文断开例程是可选的。
此属性在 MIDL 版本 5.0 中可用。
Windows Server 2003 和 Windows XP 或更高版本: 单个接口可以容纳序列化和非序列化的上下文句柄,使接口上的一个方法能够访问以独占 (序列化) 的上下文句柄,而其他方法在共享模式下访问该上下文句柄 (非序列化) 。 这些访问功能与读/写锁定机制相当;使用序列化上下文句柄的方法是独占用户 (编写器) ,而使用非序列化上下文句柄的方法是共享用户 (读取者) 。 必须序列化销毁或修改上下文句柄状态的方法。 不修改上下文句柄状态的方法(例如那些只是从上下文句柄读取的方法)可以进行非序列化。 请注意,创建方法是隐式序列化的。
示例
typedef [context_handle_noserialize] PCONTEXT_HANDLE_TYPE;
HRESULT RemoteFunc([context_handle_noserialize] pCxHandle);
另请参阅