RpcNsBindingUnexportA 関数 (rpcnsi.h)
RpcNsBindingUnexport 関数は、name-service データベース内のエントリからインターフェイスとオブジェクトのバインド ハンドルを削除します。
構文
RPC_STATUS RpcNsBindingUnexportA(
unsigned long EntryNameSyntax,
RPC_CSTR EntryName,
RPC_IF_HANDLE IfSpec,
UUID_VECTOR *ObjectUuidVec
);
パラメーター
EntryNameSyntax
EntryName の構文。
HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\NameService\DefaultSyntaxレジストリ 値エントリで 指定された構文を使用するには、 の値を指定RPC_C_NS_SYNTAX_DEFAULT。
EntryName
バインド ハンドルとオブジェクト UUID を削除するエントリ名へのポインター。
IfSpec
名前サービス データベースから削除されるバインド ハンドルのインターフェイス指定。 null パラメーター値は、バインド ハンドルのエクスポートを解除しないことを示します (エクスポート解除されるのはオブジェクト UUID のみです)。
ObjectUuidVec
サーバーが提供しなくなったオブジェクト UUID のベクトルへのポインター。 アプリケーションはこのベクトルを構築します。 null 値は、エクスポート解除するオブジェクト UUID がないことを示します (バインド ハンドルのみがエクスポート解除されます)。
戻り値
値 | 意味 |
---|---|
|
呼び出しは成功しました。 |
|
バージョン オプションが無効です。 |
|
名前の構文が無効です。 |
|
名前の構文はサポートされていません。 |
|
名前が不完全です。 |
|
name-service エントリが見つかりませんでした。 |
|
名前サービスを利用できません。 |
|
インターフェイスが見つかりませんでした。 |
|
すべてのオブジェクトがエクスポートされていないわけではありません。 |
注釈
RpcNsBindingUnexport 関数を使用すると、サーバー アプリケーションはネーム サービス データベース エントリからリソースのバインド ハンドルとオブジェクト UUID を削除できます。 サーバー アプリケーションは、 RpcNsBindingUnexport の 1 回の呼び出しで指定されたインターフェイスとオブジェクトのエクスポートを解除することも、個別にエクスポート解除することもできます。 IfSpec パラメーターで見つかった、インターフェイス UUID とメジャー およびマイナー インターフェイスのバージョン番号に一致するバインド ハンドルのみがエクスポートされません。 RpcNsMgmtBindingUnexport 関数を使用して、インターフェイスの複数のバージョンを削除します。
Windows 2000 で有効な RPC ランタイム環境では、名前サービス データベースとして Active Directory が使用されます。 つまり、承認されたエクスポートされていないエントリは、ローカル キャッシュと Active Directory の両方から削除されます。 承認されていないエクスポート解除は、ローカル キャッシュからのみ削除されます。 承認とAccess Control Listsの詳細については、プラットフォーム ソフトウェア開発キット (SDK) の「セキュリティ」セクションの「Access Control」を参照してください。
RpcNsBindingUnexport で指定されたインターフェイスのバインド ハンドルが見つからない場合、関数はRPC_S_INTERFACE_NOT_FOUND状態コードを返し、オブジェクト UUID が指定されている場合は、そのオブジェクトのエクスポートを解除しません。
指定したインターフェイスの 1 つ以上のバインド ハンドルが見つかり、エラーなしでエクスポートされていない場合、 RpcNsBindingUnexport は指定されたオブジェクト UUID がある場合はエクスポートを解除します。
指定したオブジェクト UUID のいずれかが見つからなかった場合、 RpcNsBindingUnexport は RPC_S_NOT_ALL_OBJS_UNEXPORTED状態コードを返します。
RpcNsBindingUnexport の呼び出しに加えて、サーバーは RpcEpUnregister 関数を呼び出して、サーバーが以前にローカル エンドポイント マップ データベースに登録したエンドポイントを登録解除する必要があります。
作成されると、すべてのバインド ハンドルと UUID が削除された場合でも、サーバー エントリは保持されます。 サーバー エントリには、少なくとも 1 つのバインド ハンドルが存在する必要があります。 その結果、存在しないエントリに UUID のみをエクスポートしても効果はなく、すべてのバインド ハンドルのエクスポートを解除すると、エントリが削除されます。
RpcNsBindingUnexport を慎重に使用します。 自動的にアクティブ化されたサーバーを使用できるようにするには、サーバー プロセスがアクティブ化される間は、そのバインド ハンドルをネーム サービス データベースに残しておく必要があります。 ただし、動的バインドでは、バインド ハンドルのエクスポートを解除しないと、Active Directory が管理できないほど大きくなる可能性があります。
そのため、この関数を呼び出す前に、サーバーが使用できなくなると予想される時間と、使用中のバインディングの種類に注意してください。 静的バインディングを使用している場合は、サーバーがサービスから完全に削除される場合など、サーバーが長時間使用できないと予想される場合に、この関数を予約します。
注意
rpcnsi.h ヘッダーは、RPCNsBindingUnexport をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | rpcnsi.h (Rpc.h を含む) |
Library | Rpcns4.lib |
[DLL] | Rpcns4.dll |