explicit_handle 属性
[explicit_handle] ACF 属性指定每个过程都有一个基元句柄作为其第一个参数,例如 handle_t 类型。
[
explicit_handle
]
interface interface-name
{
...
}
参数
-
interface-name
-
指定接口的名称。
备注
使用 [explicit_handle] 属性时,每个过程都有一个基元句柄作为其第一个参数,即使 IDL 文件在其参数列表中不包含此句柄也是如此。 发送到头文件和存根例程的原型包含附加参数,该参数用作定向远程调用的句柄。
[explicit_handle] 属性同时影响远程过程和序列化过程。 对于类型序列化,支持例程使用初始参数作为显式 (序列化) 句柄生成。 如果未使用 [explicit_handle] 属性,则应用程序仍可以指定操作具有显式句柄 (绑定或序列化) 定向调用。 为此,向 IDL 文件提供包含句柄类型的参数的原型。 请注意,在默认模式下,未首先出现的参数也可以用作指示调用的句柄。
因此,虽然 [explicit_handle] 属性是一种为 IDL 原型提供基元 [explicit_handle] 属性的方法,但它不一定需要更改 IDL 文件。 在 /osf 模式下,只有第一个参数可用作显式句柄类型。
[explicit_handle] 属性可用作接口属性或操作属性。 作为接口属性,它会影响接口中的所有操作以及需要序列化支持的所有类型。 但是,如果将其用作操作属性,则它仅影响该特定操作。 如果方法包含一个或多个 [in] 上下文句柄,则最左边的 [in] 上下文句柄将用作绑定句柄,并且不会创建其他显式句柄。
示例
/* ACF File */
[
explicit_handle
]
interface iface
{
// Interface definition statements.
};
另请参阅