RpcServerListen 関数 (rpcdce.h)

RpcServerListen 関数は、リモート プロシージャ 呼び出しをリッスンするように RPC ランタイム ライブラリに通知します。 この関数は、自動リッスン インターフェイスには影響しません。その機能が必要な場合は、 RpcServerRegisterIfEx を使用します。

構文

RPC_STATUS RpcServerListen(
  unsigned int MinimumCallThreads,
  unsigned int MaxCalls,
  unsigned int DontWait
);

パラメーター

MinimumCallThreads

指定されたサーバーで作成および保守する必要がある呼び出しスレッドの最小数を指定する RPC ランタイムのヒント。 この値はヒントに過ぎません。Windows のバージョンによって解釈が異なります。 Windows XP では、この値は、RPC ランタイムによって作成される各スレッド プールで以前に作成されたスレッドの数です。 アプリケーションでは、このパラメーターに 1 つを指定し、スレッド作成の決定を RPC ランタイムに延期する必要があります。

MaxCalls

サーバーが実行できる同時リモート プロシージャ呼び出しの最大数を推奨します。 効率的なパフォーマンスを実現するために、RPC ランタイム ライブラリは MaxCalls パラメーターを絶対上限としてではなく、推奨される制限として解釈します。

既定値を指定するには、RPC_C_LISTEN_MAX_CALLS_DEFAULTを使用します。

DontWait

RpcServerListen からの戻り値を制御するフラグ。 0 以外の値は、関数の処理が完了した直後に RpcServerListen が返されることを示します。 値 0 は、RpcMgmtStopServerListening 関数が呼び出され、すべてのリモート呼び出しが完了するまで、RpcServerListen が返されないことを示します。

戻り値

意味
RPC_S_OK
呼び出しは成功しました。
RPC_S_ALREADY_LISTENING
サーバーは既にリッスンしています。
RPC_S_NO_PROTSEQS_REGISTERED
プロトコル シーケンスは登録されていません。
RPC_S_MAX_CALLS_TOO_SMALL
呼び出しの最大値が小さすぎます。
 
メモ 有効なエラー コードの一覧については、「 RPC 戻り値」を参照してください。
 

注釈

サーバーがリモート プロシージャ 呼び出しを処理する準備ができたら、サーバーは RpcServerListen を呼び出します。 RPC を使用すると、サーバーは複数の呼び出しを同時に処理できます。 MaxCalls パラメーターは、サーバーが実行する同時リモート プロシージャ呼び出しの最大数を推奨します。

MaxCalls 値は 0 ではなく、MinimumCallThreads より大きくする必要があります。 0x7FFFFFFFより大きい値は、予告なしに0x7FFFFFFFに設定されます。

Windows XP/2000: MaxCalls パラメーターを RPC_C_LISTEN_MAX_CALLS_DEFAULT に設定すると、定数定義値 1234 に設定されるのではなく、同時リモート プロシージャ呼び出しの制限が解除されます。 同時呼び出しの最大数の制限を削除すると、コンピューターで処理できる数の同時リモート プロシージャ 呼び出しが可能になります。 この動作により、RPC ランタイムの効率が向上します。

各ルーチンは個別のスレッドで実行されるため、サーバー アプリケーションはサーバー マネージャー ルーチン間のコンカレンシー制御を担当します。

DontWait パラメーターの値が 0 の場合、RPC ランタイム ライブラリは、次のいずれかのイベントが発生するまでリモート プロシージャ 呼び出しをリッスンし続けます (つまり、ルーチンはサーバー アプリケーションに戻りません)。

  • サーバー アプリケーションのマネージャー ルーチンの 1 つは 、RpcMgmtStopServerListening を呼び出します。
  • クライアントは、 RpcMgmtStopServerListening を呼び出すようにサーバーに指示するサーバーによって提供されるリモート プロシージャを呼び出します。
  • クライアントは、サーバーへのバインド ハンドルを使用して RpcMgmtStopServerListening を呼び出します。
リッスン停止要求を受信すると、RPC ランタイム ライブラリは、登録されているすべてのインターフェイスに対する新しいリモート プロシージャ 呼び出しの受け入れを停止します。 コールバックを含め、呼び出しの実行を完了できます。 すべての呼び出しが完了すると、 RpcServerListen は呼び出し元に戻ります。

DontWait パラメーターの値が 0 以外の場合、RpcServerListen は関数に関連付けられているすべての命令を処理した直後にサーバーに戻ります。 RpcMgmtWaitServerListen 関数を使用して、通常は RpcServerListen に関連付けられている待機操作を実行できます。

メモRpcServerListen の Microsoft RPC 実装には、DCE 仕様に含まれていない 2 つの追加パラメーター (DontWaitMinimumCallThreads) が含まれています。
 

要件

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

こちらもご覧ください

RpcMgmtStopServerListening

RpcMgmtWaitServerListen

RpcServerRegisterIf

RpcServerRegisterIfEx

RpcServerUseAllProtseqs

RpcServerUseAllProtseqsIf

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf