RpcServerUseAllProtseqsIf 関数 (rpcdce.h)

RpcServerUseAllProtseqsIf 関数は、リモート プロシージャ 呼び出しを受信するために、インターフェイス仕様で指定されたすべてのプロトコル シーケンスとエンドポイントを使用するように RPC ランタイム ライブラリに指示します。

構文

RPC_STATUS RpcServerUseAllProtseqsIf(
  unsigned int  MaxCalls,
  RPC_IF_HANDLE IfSpec,
  void          *SecurityDescriptor
);

パラメーター

MaxCalls

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

IfSpec

バインディング ハンドルの作成に使用するプロトコル シーケンスと対応するエンドポイント情報を含むインターフェイス。

SecurityDescriptor

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

戻り値

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

注釈

メモ サポートされているすべてのプロトコル シーケンスでリッスンすることは推奨されません。これは、サーバーが非メインストリーム プロトコル シーケンスを含むすべてのプロトコル シーケンスでリッスンするためです。 サーバーはメイン ストリーム プロトコル シーケンスでのみリッスンすることをお勧めします。
 
サーバー アプリケーションは RpcServerUseAllProtseqsIf を呼び出して、IDL ファイルで提供されるすべてのプロトコル シーケンスと関連付けられたエンドポイント アドレス情報を RPC ランタイム ライブラリに登録します。 RPC でサポートされるプロトコル シーケンスの一覧については、「 文字列バインディング」を参照してください。

リモート プロシージャ コール要求を受信するには、サーバーが RPC ランタイム ライブラリに少なくとも 1 つのプロトコル シーケンスを登録する必要があります。 サーバーによって登録されたプロトコル シーケンスごとに、RPC ランタイム ライブラリによって、サーバーがリモート プロシージャ コール要求を受信する 1 つ以上のエンドポイントが作成されます。 RPC ランタイム ライブラリは、プロトコル シーケンスごとに異なるエンドポイントを作成します。

メモRpcServerUseAllProtseqsIf 関数を使用しても、サーバーは次のプロトコル シーケンスでリッスンしません。
 
メモ これらのプロトコル シーケンスのいずれかをリッスンするには、各シーケンスを個別に選択する必要があります。
 
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 関数の呼び出しを使用して、リモート プロシージャ 呼び出しを受信できるバインディング ハンドルの完全な一覧を取得できます。

詳細については、「 サーバー側バインド」を参照してください。 IDL ファイルで指定された選択したプロトコル シーケンスを登録するために、サーバーは RpcServerUseProtseqIf を呼び出します。

要件

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

こちらもご覧ください

RpcBindingVectorFree

RpcEpRegister

RpcEpRegisterNoReplace

RpcNsBindingExport

RpcServerInqBindings

RpcServerListen

RpcServerRegisterIf

RpcServerRegisterIfEx

RpcServerUseAllProtseqs

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf