HttpWaitForDemandStart 函数 (http.h)

HttpWaitForDemandStart 函数等待新请求的到来,该请求可由新请求队列进程提供服务。

语法

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

parameters

[in] RequestQueueHandle

注册请求启动的请求队列的句柄。 创建请求队列,并通过调用 HttpCreateRequestQueue 函数返回其句柄。

[in, optional] Overlapped

对于异步调用,将 pOverlapped 设置为指向 OVERLAPPED 结构;对于同步调用,请将其设置为 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 服务器 API 将返回 ERROR_INVALID_ID_AUTHORITY

当指定请求队列的新请求到达时,HttpWaitForDemandStart 完成。 此时,控制器进程可以使用此 API 启动新的工作进程到服务器挂起的请求。 延迟启动工作进程允许应用程序在需要资源之前避免消耗资源。

HTTP 服务器 API 随时仅允许在请求队列中注册一个未完成的通知。 HTTP 服务器 API 不会对可在同一请求队列中连续调用 HttpWaitForDemandStart 的次数实施限制。 处理同一请求队列的未完成进程数没有限制。

HTTP 服务器 API 支持取消异步 HttpWaitForDemandStart 调用。 应用程序可以使用带有 pOverlapped 参数中提供的重叠结构的 CancelIoEx 来取消未完成的 HttpWaitForDemandStart 调用。

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 http.h
Library Httpapi.lib
DLL Httpapi.dll

另请参阅

HTTP 服务器 API 版本 2.0 函数

HttpCloseRequestQueue

HttpCreateRequestQueue

HttpQueryRequestQueueProperty

HttpSetRequestQueueProperty

HttpShutdownRequestQueue