Share via


RPC_BINDING_HANDLE

RPC_BINDING_HANDLE データ型は、RPC ランタイム ライブラリがバインド情報にアクセスするために使用する情報を含むバインド ハンドルを宣言します。

typedef I_RPC_HANDLE RPC_BINDING_HANDLE;

解説

ランタイム ライブラリは、バインディング情報を使用して、リモート プロシージャ 呼び出しの実行を可能にするクライアントとサーバーの関係を確立します。 バインド ハンドルが作成されるコンテキストに基づいて、サーバー バインド ハンドルまたはクライアント バインド ハンドルと見なされます。

サーバー バインド ハンドルには、クライアントが特定のサーバーとの関係を確立するために必要な情報が含まれています。 任意の数の RPC API ランタイム ルーチンは、リモート プロシージャ 呼び出しを行うために使用できるサーバー バインド ハンドルを返します。

クライアント バインド ハンドルを使用してリモート プロシージャ 呼び出しを行うことはできません。 RPC ランタイム ライブラリは、RPC_BINDING_HANDLE パラメーターとして、呼び出されたサーバー プロシージャ (サーバー マネージャー ルーチンとも呼ばれます) へのクライアント バインド ハンドルを作成して提供します。 クライアント バインド ハンドルには、呼び出し元のクライアントに関する情報が含まれています。

RpcBinding* 関数と RpcNsBinding* 関数は、アプリケーションが正しくないバインド ハンドル型を提供するときにRPC_S_WRONG_KIND_OF_BINDING状態コードを返します。

アプリケーションは、複数の実行スレッド間で 1 つのバインド ハンドルを共有できます。 RPC ランタイム ライブラリは、1 つのバインド ハンドルを使用する同時リモート プロシージャ 呼び出しを管理します。 ただし、アプリケーションは、バインド ハンドルを変更する操作に対するバインド ハンドルのコンカレンシー制御を担当します。 これらの操作には、次のルーチンが含まれます。

たとえば、アプリケーションが 2 つの実行スレッド間でバインド ハンドルを共有し、 RpcBindingReset を呼び出していずれかのスレッドのバインド ハンドル エンドポイントをリセットした場合、結果は未定義になります。 もう一方のスレッドのバインド ハンドルもリセットされるか、操作が失敗するか、プロセスがクラッシュする可能性があります。 一般的なエラーは、呼び出しの進行中にバインド ハンドルを解放することです。これは通常、呼び出し元のプロセスをクラッシュさせます。

コンカレンシーが不要な場合は、 RpcBindingCopy を呼び出してバインド ハンドルのコピーを作成するようにアプリケーションを設計できます。 この場合、最初のバインド ハンドルに対する操作は、2 番目のバインド ハンドルには影響しません。

バインド ハンドルをパラメーターとして必要とするルーチンは、 RPC_BINDING_HANDLEのデータ型を示します。 バインド ハンドル パラメーターは値によって渡されます。

要件

要件
サポートされている最小のクライアント
Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows 2000 Server [デスクトップ アプリのみ]
ヘッダー
Rpcdce.h (Rpc.h を含む)