次の方法で共有


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 の両方から削除されます。 承認されていないエクスポート解除は、ローカル キャッシュからのみ削除されます。 承認とアクセス制御リストの詳細については、「プラットフォーム ソフトウェア開発キット (SDK) のセキュリティ」セクションの「アクセス制御の」を参照してください。

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

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

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

手記

rpcnsi.h ヘッダーは、RpcNsBindingUnexport を、UNICODE プリプロセッサ定数の定義に基づいてこの関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー rpcnsi.h (Rpc.h を含む)
ライブラリ Rpcns4.lib
DLL Rpcns4.dll

関連項目

RpcEpUnregister を する

RpcNsBindingExport の