RpcNsBindingExportA 関数 (rpcnsi.h)
RpcNsBindingExport 関数は、サーバーに対して複数のバインド ハンドルと複数のオブジェクトを持つ name service-database エントリを確立します。
構文
RPC_STATUS RpcNsBindingExportA(
unsigned long EntryNameSyntax,
RPC_CSTR EntryName,
RPC_IF_HANDLE IfSpec,
RPC_BINDING_VECTOR *BindingVec,
UUID_VECTOR *ObjectUuidVec
);
パラメーター
EntryNameSyntax
EntryName の構文。
HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\NameService\DefaultSyntaxレジストリ 値エントリで 指定された構文を使用するには、RPC_C_NS_SYNTAX_DEFAULTの値を指定します。
EntryName
バインド ハンドルとオブジェクト UUID がエクスポートされるエントリ名へのポインター。 null または空の文字列を指定することはできません。 クライアントとサーバーの両方で同じエントリ名を使用する必要があります。
IfSpec
エクスポートするインターフェイスを指定するスタブ生成データ構造。 null 値は、エクスポートするバインド ハンドルがないことを示し (オブジェクト UUID のみがエクスポートされます)、 BindingVec は無視されます。
BindingVec
エクスポートするサーバー バインドへのポインター。 null 値は、エクスポートするバインド ハンドルがないことを示します (オブジェクト UUID のみがエクスポートされます)。
ObjectUuidVec
サーバーによって提供されるオブジェクト UUID のベクターへのポインター。 サーバー アプリケーションは、このベクターを構築します。 null 値は、エクスポートするオブジェクト UUID がないことを示します (バインド ハンドルのみがエクスポートされます)。
戻り値
値 | 説明 |
---|---|
|
呼び出しは成功しました。 |
|
エクスポートするものは何もありませんでした。 |
|
バインド ハンドルが無効です。 |
|
これは、操作のバインドの種類が間違っていました。 |
|
名前の構文が無効です。 |
|
名前の構文はサポートされていません。 |
|
名前が不完全です。 |
|
名前サービス操作に対する特権がありません。 |
|
名前サービスを利用できません。 |
解説
RpcNsBindingExport 関数を使用すると、サーバー アプリケーションは、任意のクライアント アプリケーションで使用するために、ネーム サービス データベース内のインターフェイスをパブリックに提供できます。
Windows 2000 で有効な RPC ランタイム環境では、Active Directory を名前サービス データベースとして使用します。 つまり、承認されたエクスポートされたエントリはネーム サービスに保持され、再起動後も表示されます。 承認されていないエクスポートは保持されません。 承認とAccess Controlリストの詳細については、プラットフォーム ソフトウェア開発キット (SDK) の「セキュリティ」セクションの「Access Control」を参照してください。
インターフェイスをエクスポートするために、サーバー アプリケーションはインターフェイスを使用 して RpcNsBindingExport ルーチンを 呼び出し、サーバー バインドはクライアントがサーバーへのアクセスに使用できる処理を処理します。 また、サーバー アプリケーションは RpcNsBindingExport 関数を 呼び出して、提供するリソースのオブジェクト UUID (存在する場合) をネーム サービス データベースにパブリックに提供します。
サーバーは 、RpcNsBindingExport への 1 回の呼び出しでインターフェイスとオブジェクトをエクスポートすることも、個別にエクスポートすることもできます。 EntryName で指定された名前サービス データベース エントリが存在しない場合、 RpcNsBindingExport はそれを作成しようとします。 この場合、サーバー アプリケーションにはエントリを作成する権限が必要です。RpcNsBindingExport の呼び出しに加えて、RpcServerUseAllProtseqs または RpcServerUseProtseq 関数を呼び出したサーバーは、RpcEpRegister または RpcEpRegisterNoReplace を呼び出してローカル エンドポイント マップ データベースに登録する必要があります。
サーバーは、そのインターフェイスをネーム サービス データベースにエクスポートする必要はありません。 サーバーがエクスポートしない場合、サーバーのバインド情報がプライベートに認識されているクライアントのみが、そのインターフェイスにアクセスできます。 たとえば、文字列バインディングを構築するために必要な情報を持つクライアントは 、RpcBindingFromStringBinding を呼び出して、サーバーへのリモート プロシージャ 呼び出しを行うバインド ハンドルを作成できます。
RpcNsBindingExport を呼び出す前に、サーバーで次の操作を行う必要があります。
- 次のいずれかの関数を呼び出して、1 つ以上のプロトコル シーケンスをローカル RPC ランタイム ライブラリに登録します。
- RpcServerInqBindings 関数を呼び出して、サーバー バインドの一覧を取得します。
サーバーが同じネーム サービス データベース エントリに複数回エクスポートする場合、 RpcNsBindingExport に対する 2 回目以降の呼び出しでは、そのデータがサーバー エントリに既に含まれているバインディング情報と異なる場合に、バインド情報とオブジェクト UUID が追加されます。 既存のデータはエントリから削除されません。
ネーム サービス データベースからバインド ハンドルとオブジェクト UUID を削除するために、サーバー アプリケーションは RpcNsBindingUnexport 関数を 呼び出します。
サーバー エントリには、少なくとも 1 つのバインド ハンドルが存在する必要があります。 その結果、UUID のみを既存のエントリにエクスポートしても効果はなく、すべてのバインド ハンドルのエクスポートを解除すると、エントリが削除されます。
注意
rpcnsi.h ヘッダーは、RPCNsBindingExport をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | rpcnsi.h (Rpc.h を含む) |
Library | Rpcns4.lib |
[DLL] | Rpcns4.dll |