RpcServerUseProtseqEpEx 関数 (rpcdce.h)
RpcServerUseProtseqEpEx 関数は、リモート プロシージャ 呼び出しを受信するために、指定したプロトコル シーケンスと指定したエンドポイントを組み合わせて使用するように RPC ランタイム ライブラリに指示します。
構文
RPC_STATUS RpcServerUseProtseqEpEx(
RPC_WSTR Protseq,
unsigned int MaxCalls,
RPC_WSTR Endpoint,
void *SecurityDescriptor,
PRPC_POLICY Policy
);
パラメーター
Protseq
RPC ランタイム ライブラリに登録するプロトコル シーケンスの文字列識別子へのポインター。
MaxCalls
ncacn_ip_tcp プロトコル シーケンスのバックログ キューの長さ。 他のすべてのプロトコル シーケンスでは、このパラメーターは無視されます。 既定値を指定するには、RPC_C_PROTSEQ_MAX_REQS_DEFAULTを使用します。 「解説」を参照してください。
Endpoint
Protseq で指定されたプロトコル シーケンスのバインドを作成する際に使用するエンドポイント アドレス情報へのポインター。
SecurityDescriptor
セキュリティ サブシステムに指定された省略可能なパラメーターへのポインター。 ncacn_npおよび ncalrpc プロトコル シーケンスにのみ使用されます。 他のすべてのプロトコル シーケンスでは、このパラメーターは無視されます。 サーバーをセキュリティで保護するために、エンドポイントでセキュリティ記述子を使用することはお勧めしません。 このパラメーターは、この API の DCE 仕様には表示されません。
Policy
トランスポート固有の属性を設定するフラグを含む、 RPC_POLICY 構造体へのポインター。 ncadg_mq トランスポートの場合、これらのフラグはサーバー プロセス受信キューのプロパティを指定します。 ncacn_ip_tcpまたはncadg_ip_udpトランスポートの場合、これらのフラグは動的ポートのポート割り当てを制限し、マルチホーム コンピューターがネットワーク インターフェイス カードに選択的にバインドできるようにします。
[ポリシー] フィールドのフラグ設定は、ncacn_ip_tcp、ncadg_ip_udp、またはncadg_mqプロトコル シーケンスが使用されている場合にのみ有効です。 その他のすべてのプロトコル シーケンスでは、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 で適切な値を渡すように注意する必要があります。 Server、Advanced Server、または Datacenter Server の値が大きいと、大量の非ページ プール メモリが使用される可能性があります。 値が小さすぎると、バックログ キューが使い果たされた場合にサーバーから TCP RST によって TCP SYN パケットが満たされる可能性があるため、この値を使用しても好ましくない場合があります。 アプリケーション開発者は、 MaxCalls の適切な値を決定するときに、メモリ占有領域とスケーラビリティ要件のバランスを取る必要があります。
コンピューターが選択的バインディングを使用するように構成されている場合、正常な戻り値は、サーバーがコンピューター上に存在するすべてのネットワーク インターフェイスのエンドポイントを作成したことを保証しません。 RPC ランタイムは、選択的バインディング設定によっては、一部のネットワーク インターフェイスでリッスンしない場合があります。 さらに、インターフェイスがまだ DHCP を使用して IP アドレスを受信していない場合、RPC サーバーは DHCP アドレスが割り当てられるまでネットワーク インターフェイスでリッスンしません。 正常な戻り値は、サーバーが少なくとも 1 つのネットワーク インターフェイスでリッスンしていることを意味します。RpcServerInqBindings 関数の呼び出しを使用して、リモート プロシージャ呼び出しを受信できるバインド ハンドルの完全な一覧を取得できます。
詳細については、「 サーバー側バインディング」、「 文字列バインディング」、「 ポート割り当てと選択的バインディングのレジストリの構成」、 および「RPC メッセージ キュー 」および「MIDL 参照ページ のメッセージ と ncadg_mq」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | rpcdce.h (Rpc.h を含む) |
Library | Rpcrt4.lib |
[DLL] | Rpcrt4.dll |
こちらもご覧ください
セキュリティで保護された RPC クライアントまたはサーバーの作成