次の方法で共有


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

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

Policy

動的ポートのポート割り当てを制限するフラグを含み、マルチホーム コンピューターがネットワーク インターフェイス カードに選択的にバインドできるようにする、 RPC_POLICY 構造体へのポインター。

戻り値

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

注釈

RpcServerUseProtseqIfEx のパラメーターと効果は、RpcServerUseProtseqIf のパラメーターと効果を拡張します。 違いは Policy パラメーターです 。これにより、動的ポートのポート割り当てを制限でき、マルチホーム コンピューターはネットワーク インターフェイス カードに選択的にバインドできます。

RPC_POLICY構造体の NICFlags フィールドを 0 に設定すると、この拡張 API は元の RpcServerUseProtseqIf と機能的に同等になり、サーバーはシステム レジストリの設定に基づいて NIC にバインドされます。 レジストリ設定で使用可能なインターネット ポートとイントラネット ポートを定義する方法については、「 ポート割り当てと選択的バインディングのレジストリの構成」を参照してください。

メモ [ ポリシー ] フィールドのフラグ設定は、 ncacn_ip_tcp または ncadg_ip_udp プロトコル シーケンスが使用されている場合にのみ有効です。その他のすべてのプロトコル シーケンスでは、RPC ランタイムはこれらの値を無視します。
 
サーバー アプリケーションは RpcServerUseProtseqIfEx を呼び出して、1 つのプロトコル シーケンスを RPC ランタイム ライブラリに登録します。 プロトコル シーケンスの登録ごとに、ルーチンには IDL ファイルで指定されたエンドポイント アドレス情報が含まれます。

リモート プロシージャ コール要求を受信するには、サーバーが RPC ランタイム ライブラリに少なくとも 1 つのプロトコル シーケンスを登録する必要があります。 サーバー アプリケーションは、このルーチンを複数回呼び出して、追加のプロトコル シーケンスを登録できます。

サーバーによって登録されたプロトコル シーケンスごとに、RPC ランタイム ライブラリによって、サーバーがリモート プロシージャ コール要求を受信する 1 つ以上のエンドポイントが作成されます。 RPC ランタイム ライブラリは、プロトコル シーケンスごとに異なるエンドポイントを作成します。 ただし、プロセス内の各インターフェイスには、任意のエンドポイントを介してアクセスできます。 詳細については、「Secure 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 関数の呼び出しを使用して、リモート プロシージャ 呼び出しを受信できるバインディング ハンドルの完全な一覧を取得できます。

IDL ファイルからすべてのプロトコル シーケンスを登録するために、サーバーは RpcServerUseAllProtseqsIfEx を呼び出します。 詳細については、「 サーバー側バインド」を参照してください。 Microsoft RPC でサポートされるプロトコル シーケンスの一覧については、「 文字列バインディング」を参照してください。

注意

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

要件

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

こちらもご覧ください

RpcServerUseAllProtseqsEx

RpcServerUseAllProtseqsIfEx

RpcServerUseProtseqEpEx

RpcServerUseProtseqEx

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