RpcEpRegister 関数 (rpcdce.h)

RpcEpRegister 関数は、ローカル エンドポイント マップ データベースのサーバー アドレス情報に追加または置換します。

構文

RPC_STATUS RpcEpRegister(
  RPC_IF_HANDLE      IfSpec,
  RPC_BINDING_VECTOR *BindingVector,
  UUID_VECTOR        *UuidVector,
  RPC_CSTR           Annotation
);

パラメーター

IfSpec

ローカル エンドポイント マップ データベースに登録するためのインターフェイス。

BindingVector

サーバーがリモート プロシージャ 呼び出しを受信できるバインディング ハンドルのベクターへのポインター。

UuidVector

サーバーによって提供されるオブジェクト UUID のベクトルへのポインター。 サーバー アプリケーションはこのベクトルを構築します。null 引数の値は、登録するオブジェクト UUID がないことを示します。

Annotation

ローカル エンドポイント マップ データベースに追加された各製品間要素に適用される文字列コメントへのポインター。 文字列は、null 終端文字を含め、最大 64 文字の長さにできます。 注釈文字列がない場合は、null 値または null で終わる文字列 ("\0") を指定します。

注釈文字列は、情報のみを目的としてアプリケーションによって使用されます。 RPC はこの文字列を使用して、クライアントが通信するサーバー インスタンスを特定したり、エンドポイント マップ データベース内の要素を列挙したりしません。

戻り値

意味
RPC_S_OK
呼び出しは成功しました。
RPC_S_NO_BINDINGS
バインドはありません。
RPC_S_INVALID_BINDING
バインド ハンドルが無効でした。
RPC_S_WRONG_KIND_OF_BINDING
これは、操作の間違った種類のバインドでした。
 
メモ 有効なエラー コードの一覧については、「 RPC 戻り値」を参照してください。
 

注釈

RpcEpRegister 関数は、ローカル ホストの endpoint-map データベースのエントリを追加または置換します。 指定されたインターフェイス仕様、バインド ハンドル、およびオブジェクト UUID に一致する既存のデータベース エントリの場合、この関数はエントリのエンドポイントを、指定されたバインド ハンドル内のエンドポイントに置き換えます。

サーバーは RpcEpRegisterRpcEpRegisterNoReplace を使用して、エンドポイント マッパー データベースにエントリを登録できます。 Windows 2000 より前のバージョンでは、実行されなくなった以前のサーバー インスタンスから残されたエンドポイント マッパー データベース内の古いエントリをサーバーが上書きできるようにするための 2 つの関数を使用できます。 エンドポイント マッパー データベースは、サーバーが機能を停止するとすぐに、サーバー インスタンスによって登録されたエントリを自動的に削除します。 ただし、サーバーは、セキュリティ上の目的で別のサーバーのエンドポイント マッパー エントリを置き換えることはできません。 したがって、 RpcEpRegisterRpcEpRegisterNoReplace は、ほぼ同じ機能を実行します。

サーバー アプリケーションは RpcEpRegister を呼び出して、次のいずれかの関数を呼び出して指定されたエンドポイントを登録します。

サーバーもネーム サービス データベースにエクスポートする場合、サーバーは RpcNsBindingExport 関数を呼び出すときに使用されるのと同じ IfSpecBindingVectorUuidVector 値を使用して RpcEpRegister を呼び出します。

エンドポイントを指定せずにプロトコル シーケンスを使用すると、RPC ランタイム ライブラリによって動的エンドポイントが自動的に生成されます。 この場合、サーバーは RpcServerInqBindings を呼び出し、その後 に RpcEpRegister を呼び出して、それ自体を複数のクライアントで使用できるようにします。 それ以外の場合、自動的に開始されたサーバーは、サーバーが開始されたクライアントにのみ認識されます。エンドポイント マップ データベースに追加された各要素には、次のものが論理的に含まれています。

  • インターフェイス UUID
  • インターフェイスのバージョン (メジャーとマイナー)
  • バインド ハンドル
  • オブジェクト UUID (省略可能)
  • 注釈 (省略可能)
RpcEpRegister、IfSpecBindingVectorUuidVector パラメーターからクロス積を作成し、クロス製品の各要素をエンドポイント マップ データベースの個別の登録として追加します。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー rpcdce.h (Rpc.h を含む)
Library Rpcrt4.lib
[DLL] Rpcrt4.dll

こちらもご覧ください

RpcBindingFromStringBinding

RpcEpRegisterNoReplace

RpcEpUnregister

RpcNsBindingExport

RpcServerInqBindings

RpcServerUseAllProtseqs

RpcServerUseAllProtseqsIf

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf