HttpWaitForDemandStart 関数 (http.h)
HttpWaitForDemandStart 関数は、新しい要求キュー プロセスによって処理できる新しい要求の到着を待機します。
構文
HTTPAPI_LINKAGE ULONG HttpWaitForDemandStart(
[in] HANDLE RequestQueueHandle,
[in, optional] LPOVERLAPPED Overlapped
);
パラメーター
[in] RequestQueueHandle
要求開始が登録されている要求キューへのハンドル。 要求キューが作成され、そのハンドルが HttpCreateRequestQueue 関数の呼び出しによって返されます。
[in, optional] Overlapped
非同期呼び出しの場合は、 pOverlapped を OVERLAPPED 構造体を指すように設定します。同期呼び出しの場合は、NULL に設定 します。
同期呼び出しは、要求が指定されたキューに到着するまでブロックしますが、非同期呼び出しは直ちに ERROR_IO_PENDING を返し、呼び出し元アプリケーションは GetOverlappedResult または I/O 完了ポートを使用して操作がいつ完了するかを判断します。 同期に OVERLAPPED 構造体を使用する方法の詳細については、以下を参照してください。
同期と重複する入力と出力。
戻り値
関数が成功すると、 NO_ERRORが返されます。
関数が失敗すると、次のいずれかのエラー コードが返されます。
値 | 説明 |
---|---|
|
ReqQueueHandle パラメーターに有効な要求キューが含まれていません。 |
|
呼び出し元のプロセスは、この要求キューのコントローラー プロセスではありません。 |
|
呼び出し元のプロセスは、要求キューのシャットダウンを既に開始しているか、要求キュー ハンドルを閉じています。 |
|
要求開始登録は、要求キューに対して既に存在します。 |
解説
コントローラー プロセスのみが HttpWaitForDemandStart を呼び出して、需要開始通知を登録できます。 コントローラー プロセスは、要求キューを作成し、 HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER フラグを渡すことによってコントローラー プロセスであることを示すプロセスです。 制御プロセス以外のプロセスが HttpWaitForDemandStart を呼び出した場合、HTTP Server API は ERROR_INVALID_ID_AUTHORITYを返します。
HttpWaitForDemandStart は、指定された要求キューに対して新しい要求が到着したときに完了します。 現時点では、コントローラー プロセスはこの API を使用して、サーバー保留中の要求に対する新しいワーカー プロセスを開始できます。 ワーカー プロセスの開始が遅れていると、アプリケーションは必要になるまでリソースの消費を回避できます。
HTTP Server API では、要求キューに登録された未処理の通知は、いつでも 1 つだけ許可されます。 HTTP Server API は、同じ要求キューで HttpWaitForDemandStart を 連続して呼び出すことができる回数に制限を適用しません。 同じ要求キューで動作している未処理のプロセスの数に制限はありません。
HTTP Server API では、非同期 の HttpWaitForDemandStart 呼び出しの取り消しがサポートされています。 アプリケーションでは、pOverlapped パラメーターで指定された重複した構造体で CancelIoEx を使用して、未処理の HttpWaitForDemandStart 呼び出しを取り消すことができます。
要件
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | http.h |
Library | Httpapi.lib |
[DLL] | Httpapi.dll |