RpcServerUseProtseqIfExW 関数 (rpcdce.h)
RpcServerUseProtseqIfEx 関数は、リモート プロシージャ 呼び出しを受信するために、指定されたプロトコル シーケンスとインターフェイス仕様のエンドポイントを組み合わせて使用するように RPC ランタイム ライブラリに指示します。
構文
RPC_STATUS RpcServerUseProtseqIfExW(
RPC_WSTR Protseq,
unsigned int MaxCalls,
RPC_IF_HANDLE IfSpec,
void *SecurityDescriptor,
PRPC_POLICY Policy
);
パラメーター
Protseq
RPC ランタイム ライブラリに登録するプロトコル シーケンスの文字列識別子へのポインター。
MaxCalls
ncacn_ip_tcp プロトコル シーケンスのバックログ キューの長さ。 他のすべてのプロトコル シーケンスでは、このパラメーターは無視されます。 既定値を指定するには、RPC_C_PROTSEQ_MAX_REQS_DEFAULTを使用します。 「解説」を参照してください。
IfSpec
Protseq パラメーターで指定されたプロトコル シーケンスのバインディングの作成に使用するエンドポイント情報を含むインターフェイス。
SecurityDescriptor
セキュリティ サブシステムに指定された省略可能なパラメーターへのポインター。 ncalrpc プロトコル シーケンスの
Policy
動的ポートのポート割り当てを制限し、マルチホーム コンピューターがネットワーク インターフェイス カードに選択的にバインドできるようにするフラグを含む、RPC_POLICY 構造体へのポインター。
戻り値
価値 | 意味 |
---|---|
|
呼び出しは成功しました。 |
|
このプロトコル シーケンスのエンドポイントが IDL ファイルで指定されていません。 |
|
プロトコル シーケンスは、このホストではサポートされていません。 |
|
プロトコル シーケンスが無効です。 |
|
エンドポイントの形式が無効です。 |
|
システムがメモリ不足です。 |
|
セキュリティ記述子が無効です。 |
備考
RpcServerUseProtseqIfEx のパラメーターと効果、RpcServerUseProtseqIfのパラメーターと効果を拡張します。 違いは、動的ポートのポート割り当てを制限し、マルチホーム コンピューターがネットワーク インターフェイス カードに選択的にバインドできるようにする、Policy パラメーターです。
RPC_POLICY 構造体の NICFlags フィールドを 0 に設定すると、この拡張 API は、元の RpcServerUseProtseqIfと機能的に同等になり、サーバーはシステム レジストリの設定に基づいて NIC にバインドされます。 使用可能なインターネット ポートとイントラネット ポートをレジストリ設定で定義する方法については、「ポート割り当てと選択的バインディングのレジストリの構成」を参照してください。
リモート プロシージャ コール要求を受信するには、サーバーが少なくとも 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 関数を呼び出すと、リモート プロシージャ 呼び出しを受信できるバインディング ハンドルの完全な一覧を取得できます。
IDL ファイルからすべてのプロトコル シーケンスを登録するために、サーバーは RpcServerUseAllProtseqsIfEx を呼び出します。 詳細については、「バインドを
手記
rpcdce.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして RpcServerUseProtseqIfEx を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows Server 2003 [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | rpcdce.h (Rpc.h を含む) |
ライブラリ | Rpcrt4.lib |
DLL | Rpcrt4.dll |
関連項目
RpcServerUseAllProtseqsEx の
RpcServerUseAllProtseqsIfEx を
RpcServerUseProtseqEpEx を
RpcServerUseProtseqEx の
セキュリティで保護された RPC クライアントまたはサーバーの作成