显式绑定句柄

为了最大程度地控制绑定进程,客户端/服务器应用程序可以使用显式绑定句柄。 与隐式句柄一样,显式绑定句柄使客户端应用程序能够选择要执行其调用的服务器。 此外,显式绑定句柄使客户端/服务器应用程序能够创建经过身份验证的 RPC 通信会话。 使用显式句柄,客户端可以连接到多个服务器并在多个服务器上执行远程过程。 多线程和异步客户端应用程序甚至可以连接到多个服务器并同时执行多个远程过程。

客户端应用程序必须将显式句柄作为参数传递给每个远程过程调用。 为了符合 OSF 标准,应将句柄指定为每个远程过程的第一个参数。 但是,通过对 RPC 的 Microsoft 扩展,可以在其他位置指定绑定句柄。 有关详细信息,请参阅 Microsoft RPC Binding-Handle扩展

若要创建显式句柄,请将句柄声明为 IDL 文件中远程操作的参数。 可以重新定义 Hello, World 示例 以使用显式句柄,如下所示:

/* IDL file for explicit handles */
 
[ 
  uuid(20B309B1-015C-101A-B308-02608C4C9B53),
  version(1.0) 
]
interface hello
{
  void HelloProc([in] handle_t h1,
                 [in, string] char *  pszString); 
}

可以在单个接口中组合显式句柄和隐式句柄。 如果函数的参数列表中有显式句柄,则将使用该句柄。 如果接口中使用隐式句柄的函数未指定显式句柄,则将使用默认隐式句柄。