次の方法で共有


HttpWaitForDemandStart 関数 (http.h)

HttpWaitForDemandStart 関数は、新しい要求キュー プロセスによって処理できる新しい要求の到着を待機します。

構文

HTTPAPI_LINKAGE ULONG HttpWaitForDemandStart(
  [in]           HANDLE       RequestQueueHandle,
  [in, optional] LPOVERLAPPED Overlapped
);

パラメーター

[in] RequestQueueHandle

要求開始が登録されている要求キューへのハンドル。 要求キューが作成され、そのハンドルが HttpCreateRequestQueue 関数の呼び出しによって返されます。

[in, optional] Overlapped

非同期呼び出しの場合は、 pOverlappedOVERLAPPED 構造体を指すように設定します。同期呼び出しの場合は、NULL に設定 します

同期呼び出しは、要求が指定されたキューに到着するまでブロックしますが、非同期呼び出しは直ちに ERROR_IO_PENDING を返し、呼び出し元アプリケーションは GetOverlappedResult または I/O 完了ポートを使用して操作がいつ完了するかを判断します。 同期に OVERLAPPED 構造体を使用する方法の詳細については、以下を参照してください。
同期と重複する入力と出力

戻り値

関数が成功すると、 NO_ERRORが返されます。

関数が失敗すると、次のいずれかのエラー コードが返されます。

説明
ERROR_INVALID_PARAMETER
ReqQueueHandle パラメーターに有効な要求キューが含まれていません。
ERROR_INVALID_ID_AUTHORITY
呼び出し元のプロセスは、この要求キューのコントローラー プロセスではありません。
ERROR_INVALID_HANDLE
呼び出し元のプロセスは、要求キューのシャットダウンを既に開始しているか、要求キュー ハンドルを閉じています。
ERROR_ALREADY_EXISTS
要求開始登録は、要求キューに対して既に存在します。

解説

コントローラー プロセスのみが 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

関連項目

HTTP Server API バージョン 2.0 関数

HttpCloseRequestQueue

HttpCreateRequestQueue

HttpQueryRequestQueueProperty

HttpSetRequestQueueProperty

HttpShutdownRequestQueue