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

如果函式失敗,它會傳回下列其中一個錯誤碼。

意義
ERROR_INVALID_PARAMETER
ReqQueueHandle參數不包含有效的要求佇列。
ERROR_INVALID_ID_AUTHORITY
呼叫進程不是這個要求佇列的控制器進程。
ERROR_INVALID_HANDLE
呼叫進程已在要求佇列上起始關機,或已關閉要求佇列控制碼。
ERROR_ALREADY_EXISTS
要求佇列已存在要求開始註冊。

備註

只有控制器進程可以呼叫 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

另請參閱

HTTP Server API 2.0 版函式

HttpCloseRequestQueue

HttpCreateRequestQueue

HttpQueryRequestQueueProperty

HttpSetRequestQueueProperty

HttpShutdownRequestQueue