明示的なバインド ハンドル
バインディング プロセスを最大限に制御するために、クライアント/サーバー アプリケーションでは明示的なバインド ハンドルを使用できます。 暗黙的なハンドルと同様に、明示的なバインド ハンドルを使用すると、クライアント アプリケーションで、呼び出しを実行するサーバーを選択できます。 さらに、明示的なバインド ハンドルを使用すると、クライアント/サーバー アプリケーションで認証済みの RPC 通信セッションを作成できます。 明示的なハンドルを使用すると、クライアントは複数のサーバーに接続し、複数のサーバーでリモート プロシージャを実行できます。 マルチスレッドおよび非同期クライアント アプリケーションは、複数のサーバーに接続し、複数のリモート プロシージャを同時に実行することもできます。
クライアント アプリケーションは、明示的なハンドルをパラメーターとして各リモート プロシージャ 呼び出しに渡す必要があります。 OSF 標準に準拠するには、各リモート プロシージャの最初のパラメーターとしてハンドルを指定する必要があります。 ただし、RPC に対する Microsoft 拡張機能を使用すると、他の位置でバインド ハンドルを指定できます。 詳細については、「 Microsoft RPC Binding-Handle Extensions」を参照してください。
明示的なハンドルを作成するには、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);
}
1 つのインターフェイスで明示的ハンドルと暗黙的ハンドルを組み合わせることができます。 関数のパラメーター リストに明示的なハンドルがある場合、そのハンドルが使用されます。 暗黙的ハンドルを使用するインターフェイス内の関数で明示的なハンドルが指定されていない場合は、既定の暗黙的なハンドルが使用されます。