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);

另请参阅

ACF 属性

context_handle_serialize

context_handle

上下文句柄

RpcSsDontSerializeContext

服务器上下文运行例程

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

typedef