次の方法で共有


RpcServerUseProtseqEpExA 関数 (rpcdce.h)

RpcServerUseProtseqEpEx 関数は、リモート プロシージャ 呼び出しを受信するために、指定したプロトコル シーケンスと指定したエンドポイントを組み合わせて使用するように RPC ランタイム ライブラリに指示します。

構文

RPC_STATUS RpcServerUseProtseqEpExA(
  RPC_CSTR     Protseq,
  unsigned int MaxCalls,
  RPC_CSTR     Endpoint,
  void         *SecurityDescriptor,
  PRPC_POLICY  Policy
);

パラメーター

Protseq

RPC ランタイム ライブラリに登録するプロトコル シーケンスの文字列識別子へのポインター。

MaxCalls

ncacn_ip_tcp プロトコル シーケンスのバックログ キューの長さ。 他のすべてのプロトコル シーケンスでは、このパラメーターは無視されます。 既定値を指定するには、RPC_C_PROTSEQ_MAX_REQS_DEFAULTを使用します。 「解説」を参照してください。

Endpoint

Protseqで指定されたプロトコル シーケンスのバインディングの作成に使用するエンドポイント アドレス情報へのポインター。

SecurityDescriptor

セキュリティ サブシステムに指定された省略可能なパラメーターへのポインター。 ncalrpc プロトコル シーケンスの ncacn_npにのみ使用されます。 他のすべてのプロトコル シーケンスでは、このパラメーターは無視されます。 サーバーをセキュリティで保護するためにエンドポイントでセキュリティ記述子を使用することはお勧めしません。 このパラメーターは、この API の DCE 仕様には含まれません。

Policy

トランスポート固有の属性を設定するフラグを含む、RPC_POLICY 構造体へのポインター。 ncadg_mq トランスポートの場合、これらのフラグは、サーバー プロセス受信キューのプロパティを指定します。 ncacn_ip_tcp または ncadg_ip_udp トランスポートの場合、これらのフラグは動的ポートのポート割り当てを制限し、マルチホーム コンピューターがネットワーク インターフェイス カードに選択的にバインドできるようにします。

Policy フィールドのフラグ設定は、ncacn_ip_tcpncadg_ip_udp、または ncadg_mq プロトコル シーケンスが使用されている場合にのみ有効です。 その他のすべてのプロトコル シーケンスでは、RPC ランタイムはこれらの値を無視します。

動的エンドポイントに関連付けられているポリシーの一部、RpcServerUseProtseqEpEx 関数が呼び出されると無視されることに注意してください。これは、ポートがエンドポイント自体で指定されているためです。
 

戻り値

価値 意味
RPC_S_OK
呼び出しは成功しました。
RPC_S_PROTSEQ_NOT_SUPPORTED
プロトコル シーケンスは、このホストではサポートされていません。
RPC_S_INVALID_RPC_PROTSEQ
プロトコル シーケンスが無効です。
RPC_S_INVALID_ENDPOINT_FORMAT
エンドポイントの形式が無効です。
RPC_S_OUT_OF_MEMORY
システムがメモリ不足です。
RPC_S_DUPLICATE_ENDPOINT
エンドポイントが重複しています。
RPC_S_INVALID_SECURITY_DESC
セキュリティ記述子が無効です。
 
有効なエラー コードの一覧については、「RPC 戻り値」を参照してください。
 

備考

RpcServerUseProtseqEpEx のパラメーターと効果、rpcServerUseProtseqEpのサブボリューム します。 違いは、エンドポイントで特定のポリシーを設定できる Policy パラメーターです。 RPC_POLICY 構造体の NICFlags フィールドを 0 に設定すると、この拡張関数は、ncacn_ip_tcp または ncadg_ip_udp トランスポートで使用する場合に、元の RpcServerUseProtseqEp と同等になります。

サーバー アプリケーション RpcServerUseProtseqEpEx を呼び出して、1 つのプロトコル シーケンスを RPC ランタイム ライブラリに登録します。 各プロトコル シーケンス登録では、RpcServerUseProtseqEpEx 指定されたエンドポイント アドレス情報が含まれます。

リモート プロシージャ コール要求を受信するには、サーバーが少なくとも 1 つのプロトコル シーケンスを RPC ランタイム ライブラリに登録する必要があります。 サーバー アプリケーションは、このルーチンを何度も呼び出して、追加のプロトコル シーケンスとエンドポイントを登録できます。 サーバーによって登録されたプロトコル シーケンスごとに、RPC ランタイム ライブラリは、サーバーがリモート プロシージャ コール要求を受信する 1 つ以上のエンドポイントを作成します。 RPC ランタイム ライブラリは、プロトコル シーケンスごとに異なるエンドポイントを作成します。 ただし、プロセス内の各インターフェイスには、任意のエンドポイントを介してアクセスできます。 詳細については、「セキュリティで保護された RPC クライアントまたはサーバーの作成」を参照してください。

MaxCallsの場合、アプリケーションによって提供される値はヒントにすぎません。 RPC ランタイムまたは Windows ソケット プロバイダーによって値がオーバーライドされる場合があります。 たとえば、Windows XP または Windows 2000 Professional では、値は 5 に制限されます。 5 より大きい値は無視され、代わりに 5 が使用されます。 Windows Server 2003 および Windows 2000 Server では、この値が使用されます。

アプリケーションは、MaxCallsで適切な値を渡すように注意する必要があります。 サーバー、Advanced Server、または Datacenter Server の値が大きいと、大量の非ページ プール メモリが使用される可能性があります。 値が小さすぎると、バックログ キューが使い果たされた場合に、サーバーから TCP RST によって TCP SYN パケットが満たされる可能性があるため、好ましくない場合もあります。 アプリケーション開発者は、MaxCallsの適切な値を決定するときに、メモリ占有領域とスケーラビリティ要件のバランスを取る必要があります。

コンピューターが選択的バインディングを使用するように構成されている場合、正常な戻り値は、サーバーがコンピューター上に存在するすべてのネットワーク インターフェイスのエンドポイントを作成したことを保証しません。 RPC ランタイムは、選択的バインディング設定によっては、一部のネットワーク インターフェイスでリッスンしない場合があります。 さらに、インターフェイスがまだ DHCP を使用して IP アドレスを受信していない場合、RPC サーバーは、DHCP アドレスが割り当てられるまでネットワーク インターフェイスをリッスンしません。 成功した戻り値は、サーバーが少なくとも 1 つのネットワーク インターフェイスでリッスンしていることを意味します。RpcServerInqBindings 関数を呼び出すと、リモート プロシージャ 呼び出しを受信できるバインディング ハンドルの完全な一覧を取得できます。

詳細については、「Server-Side バインディング文字列バインディングポート割り当ておよび選択的バインディングのレジストリの構成」、および「RPC メッセージ キュー と MIDL リファレンス ページ メッセージ および ncadg_mqする」を参照してください。

手記

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

必要条件

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

関連項目

RPC_POLICY

RpcServerUseAllProtseqsEx の

RpcServerUseAllProtseqsIfEx を する

RpcServerUseProtseqEx の

RpcServerUseProtseqIfEx の

セキュリティで保護された RPC クライアントまたはサーバーの作成