RpcNsBindingExportA 関数 (rpcnsi.h)
RpcNsBindingExport 関数は、サーバーの複数のバインド ハンドルと複数のオブジェクトを持つネーム サービス-データベース エントリを確立します。
構文
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 を名前サービス データベースとして使用します。 つまり、承認されたエクスポートされたエントリはネーム サービスに保持され、再起動後も表示されます。 承認されていないエクスポートは保持されません。 承認とアクセス制御リストの詳細については、「プラットフォーム ソフトウェア開発キット (SDK) のセキュリティ」セクションの「アクセス制御の」を参照してください。
インターフェイスをエクスポートするために、サーバー アプリケーションはインターフェイスを使用して RpcNsBindingExport ルーチンを呼び出し、サーバー バインドはクライアントがサーバーへのアクセスに使用できる処理を処理します。 サーバー アプリケーションは、RpcNsBindingExport 関数を呼び出して、提供するリソースのオブジェクト UUID (存在する場合) をネーム サービス データベースにパブリックに提供します。
サーバーは、RpcNsBindingExportを
サーバーは、そのインターフェイスをネーム サービス データベースにエクスポートする必要はありません。 サーバーがエクスポートしない場合、サーバーのバインディング情報がプライベートに認識されているクライアントのみが、そのインターフェイスにアクセスできます。 たとえば、文字列バインディングを構築するために必要な情報を持つクライアントは、RpcBindingFromStringBinding を呼び出して、サーバーへのリモート プロシージャ呼び出しを行うバインディング ハンドルを作成できます。
RpcNsBindingExport
- 次のいずれかの関数を呼び出して、1 つ以上のプロトコル シーケンスをローカル RPC ランタイム ライブラリに登録します。
- RpcServerUseAllProtseqs、 RpcServerUseAllProtseqsEx
- RpcServerUseProtseq、 RpcServerUseProtseqEx
- RpcServerUseAllProtseqsIf, RpcServerUseAllProtseqsIfEx
-
RpcServerUseProtseqIf
、RpcServerUseProtseqIf -
RpcServerUseProtseqEp、RpcServerUseProtseqEp
- RpcServerInqBindings 関数を呼び出して、サーバー バインドの一覧を取得します。
サーバーが同じネーム サービス データベース エントリに複数回エクスポートする場合、RpcNsBindingExport 2 回目以降の呼び出し、そのデータが既にサーバー エントリにあるバインディング情報と異なる場合に、バインド情報とオブジェクト UUID を追加します。 既存のデータはエントリから削除されません。
ネーム サービス データベースからバインド ハンドルとオブジェクト UUID を削除するために、サーバー アプリケーションは rpcNsBindingUnexport 関数
サーバー エントリには、少なくとも 1 つのバインド ハンドルが存在する必要があります。 その結果、UUID のみを既存のエントリにエクスポートしても効果はなく、すべてのバインド ハンドルのエクスポートを解除すると、エントリが削除されます。
手記
rpcnsi.h ヘッダーは、RPCNsBindingExport を、UNICODE プリプロセッサ定数の定義に基づいてこの関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows 2000 Server [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | rpcnsi.h (Rpc.h を含む) |
ライブラリ | Rpcns4.lib |
DLL | Rpcns4.dll |
関連項目
RpcEpRegister の
RpcEpRegisterNoReplace の
RpcNsBindingUnexport の
RpcServerInqBindings の
RpcServerUseAllProtseqs を
RpcServerUseProtseq の
RpcServerUseProtseqEp の
RpcServerUseProtseqIf を