HttpWaitForDemandStart 函式 (HTTP.h)
HttpWaitForDemandStart函式會等候新要求抵達,此要求可由新的要求佇列進程提供服務。
語法
HTTPAPI_LINKAGE ULONG HttpWaitForDemandStart(
[in] HANDLE RequestQueueHandle,
[in, optional] LPOVERLAPPED Overlapped
);
參數
[in] RequestQueueHandle
要求佇列的控制碼,要求開始註冊。 系統會建立要求佇列,並透過呼叫 HttpCreateRequestQueue 函式所傳回的控制碼。
[in, optional] Overlapped
針對非同步呼叫,請將 pOverlapped 設定為指向 重迭 結構;針對同步呼叫,請將它設定為 Null。
同步呼叫會封鎖直到要求抵達指定的佇列為止,而非同步呼叫會立即傳回 ERROR_IO_PENDING ,而呼叫應用程式接著會使用 GetOverlappedResult 或 I/O 完成埠來判斷作業何時完成。 如需使用 重迭 結構進行同步處理的詳細資訊,請參閱
同步處理和重迭的輸入和輸出。
傳回值
如果函式成功,它會傳回 NO_ERROR。
如果函式失敗,它會傳回下列其中一個錯誤碼。
值 | 意義 |
---|---|
|
ReqQueueHandle參數不包含有效的要求佇列。 |
|
呼叫進程不是這個要求佇列的控制器進程。 |
|
呼叫進程已在要求佇列上起始關機,或已關閉要求佇列控制碼。 |
|
要求佇列已存在要求開始註冊。 |
備註
只有控制器進程可以呼叫 HttpWaitForDemandStart 來註冊要求啟動通知。 控制器進程是建立要求佇列的進程,並指出它是控制器進程,方法是傳遞 HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER 旗標。 如果控制進程以外的進程呼叫 HttpWaitForDemandStart,HTTP 伺服器 API 會傳回 ERROR_INVALID_ID_AUTHORITY。
當新要求送達指定要求佇列時,HttpWaitForDemandStart就會完成。 此時,控制器進程可以使用此 API 來啟動新的背景工作進程到伺服器擱置的要求。 延遲啟動背景工作進程可讓應用程式避免耗用資源,直到需要資源為止。
HTTP 伺服器 API 隨時只允許在要求佇列上註冊一個未處理的通知。 HTTP 伺服器 API 不會對 HttpWaitForDemandStart 連續在相同的要求佇列上呼叫的次數強制執行限制。 處理相同要求佇列的未處理進程數目沒有限制。
HTTP 伺服器 API 支援取消非同步 HttpWaitForDemandStart 呼叫。 應用程式可以使用 CancelIoEx 搭配 pOverlapped 參數中提供的重迭結構,取消未處理的 HttpWaitForDemandStart 呼叫。
需求
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | HTTP.h |
程式庫 | Httpapi.lib |
Dll | Httpapi.dll |