RpcNsBindingUnexportA 関数 (rpcnsi.h)

RpcNsBindingUnexport 関数は、name-service データベース内のエントリからインターフェイスとオブジェクトのバインド ハンドルを削除します。

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

構文

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 がないことを示します (バインド ハンドルのみがエクスポート解除されます)。

戻り値

意味
RPC_S_OK
呼び出しは成功しました。
RPC_S_INVALID_VERS_OPTION
バージョン オプションが無効です。
RPC_S_INVALID_NAME_SYNTAX
名前の構文が無効です。
RPC_S_UNSUPPORTED_NAME_SYNTAX
名前の構文はサポートされていません。
RPC_S_INCOMPLETE_NAME
名前が不完全です。
RPC_S_ENTRY_NOT_FOUND
name-service エントリが見つかりませんでした。
RPC_S_NAME_SERVICE_UNAVAILABLE
名前サービスを利用できません。
RPC_S_INTERFACE_NOT_FOUND
インターフェイスが見つかりませんでした。
RPC_S_NOT_ALL_OBJS_UNEXPORTED
すべてのオブジェクトがエクスポートされていないわけではありません。
 
メモ 有効なエラー コードの一覧については、「 RPC 戻り値」を参照してください。
 

注釈

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 が管理できないほど大きくなる可能性があります。

そのため、この関数を呼び出す前に、サーバーが使用できなくなると予想される時間と、使用中のバインディングの種類に注意してください。 静的バインディングを使用している場合は、サーバーがサービスから完全に削除される場合など、サーバーが長時間使用できないと予想される場合に、この関数を予約します。

メモ ネーム サービス データベースは、比較的安定するように設計されています。 レプリケートされたネーム サービス データベースでは、 RpcNsBindingExport 関数と RpcNsBindingUnexport 関数を 頻繁に使用すると、name-service データベースは同じエントリを繰り返し削除して置き換え、パフォーマンスの問題を引き起こす可能性があります。
 

注意

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

こちらもご覧ください

RpcEpUnregister

RpcNsBindingExport