RpcNsBindingImportNext 関数 (rpcnsi.h)

RpcNsBindingImportNext 関数は、インターフェイス (および必要に応じてネーム サービス データベースのオブジェクト) を検索し、互換性のあるサーバーのバインド ハンドルが見つかった場合に返します。

メモ この関数は、Windows Vista 以降のオペレーティング システムではサポートされていません。
 

構文

RPC_STATUS RpcNsBindingImportNext(
  RPC_NS_HANDLE      ImportContext,
  RPC_BINDING_HANDLE *Binding
);

パラメーター

ImportContext

RpcNsBindingImportBegin 関数から返される名前サービス ハンドル。

Binding

サーバーのクライアント互換サーバー バインド ハンドルへのポインターを返します。

戻り値

説明
RPC_S_OK
呼び出しは成功しました。
RPC_S_NO_MORE_BINDINGS
これ以上のバインドはありません。
RPC_S_NAME_SERVICE_UNAVAILABLE
名前サービスを利用できません。
 
メモ 有効なエラー コードの一覧については、「 RPC 戻り値」を参照してください。
 

解説

RpcNsBindingImportNext 関数は、RpcNsBindingImportBegin 関数の IfSpec パラメーターと ObjUuid パラメーターで指定されたインターフェイスとオブジェクト UUID を提供するサーバーに対して、クライアント互換のサーバー バインド ハンドル 1 つ返します。 関数は、サーバーと直接ではなく、ネーム サービス データベースとのみ通信します。

Windows 2000 で有効な RPC 環境では、Active Directory を名前サービス データベースとして使用し、ランタイム環境が検索を実行する順序は次のとおりです。

  • ローカル キャッシュで検索します。 エントリがない場合は、
  • Active Directory を検索します。 エントリがない場合は、
  • ドメイン内の他のすべてのディレクトリ サービスにブロードキャスト要求を送信します。

    エントリが Active Directory に存在するが、エントリに関連付けられている情報がない場合、実行時環境ではこのブロードキャスト要求は発行されないことに注意してください。

返される互換性のあるバインド ハンドルには常にオブジェクト UUID が含まれます。この値は RpcNsBindingImportBegin 関数の ObjUuid パラメーターに依存します。 null 以外のオブジェクト UUID が指定された場合、返されるバインド ハンドルにはそのオブジェクト UUID が含まれます。 ただし、 null オブジェクト UUID または null 値が指定された場合、返されるオブジェクト UUID は次のような結果になります。
  • サーバーがオブジェクト UUID をエクスポートしなかった場合、返されるバインド ハンドルには nil オブジェクト UUID が含まれます。
  • サーバーが 1 つのオブジェクト UUID をエクスポートした場合、返されるバインド ハンドルにはそのオブジェクト UUID が含まれます。
  • サーバーが複数のオブジェクト UUID をエクスポートした場合、返されるバインド ハンドルにはオブジェクト UUID のいずれかが含まれます。 次のインポート操作では、返されたオブジェクト UUID を非決定的な方法で選択します。 その結果、1 つのサーバー エントリから互換性のあるバインド ハンドルごとに異なるオブジェクト UUID を返すことができます。
RpcNsBindingImportNext 関数は、検出された互換性のあるバインド ハンドルから 1 つのサーバー バインド ハンドルを選択して返します。 クライアント アプリケーションは、そのバインド ハンドルを使用して、サーバーへのリモート プロシージャ 呼び出しを試行できます。 クライアントがサーバーとの関係を確立できない場合は、 RpcNsBindingImportNext をもう一度呼び出すことができます。

クライアントが RpcNsBindingImportNext を呼び出すたびに、関数は別のサーバー バインド ハンドルを返します。 返されるバインド ハンドルは順序付けされません。 クライアント アプリケーションは 、RpcNsBindingInqEntryName 関数を 呼び出して、バインド ハンドルの取得元のエントリ名に name-service データベースを取得します。検索が name-service データベースの末尾に達すると、 RpcNsBindingInqEntryName はRPC_S_NO_MORE_BINDINGSの状態を返し、バインド パラメーター値 NULL を返します。

RpcNsBindingImportNext 関数は、返された Binding パラメーターによって参照されるデータにストレージを割り当てます。 クライアント アプリケーションがバインド ハンドルを使用して終了したら、 RpcBindingFree を呼び出してストレージの割り当てを解除する必要があります。 RpcNsBindingImportNext の各呼び出しには、RpcBindingFree への対応する呼び出しが必要です。

クライアントは、インポート コンテキストを削除する RpcNsBindingImportDone 関数を呼び出す役割を担います。 また、クライアントは RpcNsBindingImportDone を呼び出してから RpcNsBindingImportBegin を呼び出して、互換性のあるサーバーの新しい検索を開始します。 返されるバインド ハンドルの順序は新しい検索ごとに異なるため、アプリケーションが実行されるたびにバインド ハンドルがアプリケーションに返される順序が異なる場合があります。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー rpcnsi.h (Rpc.h を含む)
Library Rpcns4.lib
[DLL] Rpcns4.dll

関連項目

RpcBindingFree

RpcNsBindingImportBegin

RpcNsBindingImportDone

RpcNsBindingInqEntryName

RpcNsBindingLookupBegin

RpcNsBindingLookupDone

RpcNsBindingLookupNext

RpcNsBindingSelect