Поделиться через


Функция 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 или завершения ввода-вывода, чтобы определить, когда операция будет завершена. Дополнительные сведения об использовании структур 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, API HTTP-сервера возвращает ERROR_INVALID_ID_AUTHORITY.

HttpWaitForDemandStart завершается, когда поступает новый запрос для указанной очереди запросов. В настоящее время процесс контроллера может использовать этот API для запуска нового рабочего процесса для ожидающих запросов сервера. Отложенный запуск рабочего процесса позволяет приложениям избежать использования ресурсов до тех пор, пока они не потребуются.

API HTTP-сервера позволяет в любой момент зарегистрировать только одно неоплаченное уведомление в очереди запросов. API HTTP-сервера не применяет ограничения на количество вызовов HttpWaitForDemandStart в одной очереди запросов последовательно. Количество невыполненных процессов, работающих в одной очереди запросов, не ограничено.

API HTTP-сервера поддерживает отмену асинхронных вызовов HttpWaitForDemandStart . Приложения могут использовать CancelIoEx с перекрывающейся структурой, указанной в параметре pOverlapped , для отмены невыполненного вызова HttpWaitForDemandStart .

Требования

   
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header http.h
Библиотека Httpapi.lib
DLL Httpapi.dll

См. также раздел

Функции API HTTP-сервера версии 2.0

HttpCloseRequestQueue

HttpCreateRequestQueue

HttpQueryRequestQueueProperty

HttpSetRequestQueueProperty

HttpShutdownRequestQueue