自动绑定句柄

当应用程序不需要特定服务器且不需要维护客户端和服务器之间的任何状态信息时,自动绑定句柄非常有用。 使用自动绑定句柄时,无需编写任何客户端应用程序代码来处理绑定和句柄,只需在应用程序配置文件中指定自动绑定句柄的使用 (ACF) 。 然后,存根定义句柄并管理绑定。

例如,可以使用自动句柄实现时间戳操作。 它与提供时间戳的服务器提供的客户端应用程序没有区别,因为它可以接受来自任何可用服务器的时间。

注意

Macintosh 平台不支持自动句柄。

 

通过在 ACF 中包含 [auto_handle] 属性来指定自动句柄的使用。 时间戳示例使用以下 ACF:

/* ACF file */
[
  auto_handle
]
interface autoh
{
}

如果 ACF 不包含任何其他句柄属性,并且远程过程不使用显式句柄,则 MIDL 编译器默认使用自动句柄。 当 ACF 不存在时,它还使用自动句柄作为默认句柄。

远程过程在 IDL 文件中指定。 自动句柄不得显示为远程过程的参数。 例如:

/* IDL file */
[ 
  uuid (6B29FC40-CA47-1067-B31D-00DD010662DA),
  version(1.0),
  pointer_default(unique)
]
interface autoh
{
  void GetTime([out] long * time);
  void Shutdown(void);
}

自动句柄的好处是开发人员无需编写任何代码来管理句柄;存根会自动管理绑定。 这与 Hello, World 示例明显不同,其中客户端管理 ACF 中定义的隐式基元句柄,并且必须调用多个运行时函数来建立绑定句柄。