Функция 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.
Если функция завершается сбоем, она возвращает один из следующих кодов ошибок.
Значение | Значение |
---|---|
|
Параметр ReqQueueHandle не содержит допустимую очередь запросов. |
|
Вызывающий процесс не является процессом контроллера для этой очереди запросов. |
|
Процесс вызова уже инициировал завершение работы очереди запросов или закрыл дескриптор очереди запросов. |
|
Для очереди запросов уже существует регистрация начала запроса. |
Комментарии
Только процесс контроллера может вызвать 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 |