Функция HttpCreateRequestQueue (http.h)
Функция HttpCreateRequestQueue создает новую очередь запросов или открывает существующую очередь запросов.
Эта функция заменяет функцию HTTP версии 1.0 HttpCreateHttpHandle.
Синтаксис
HTTPAPI_LINKAGE ULONG HttpCreateRequestQueue(
[in] HTTPAPI_VERSION Version,
[in, optional] PCWSTR Name,
[in, optional] PSECURITY_ATTRIBUTES SecurityAttributes,
[in, optional] ULONG Flags,
[out] PHANDLE RequestQueueHandle
);
Параметры
[in] Version
Структура HTTPAPI_VERSION, указывающая версию очереди запросов. Для версии 2.0 объявите экземпляр структуры и задайте для него предварительно определенное значение HTTPAPI_VERSION_2 перед передачей в HttpCreateRequestQueue.
Версия должна быть 2.0; HttpCreateRequestQueue не поддерживает очереди запросов версии 1.0.
[in, optional] Name
Имя очереди запроса. Длина в байтах не может превышать MAX_PATH.
Необязательный параметр имени позволяет другим процессам получать доступ к очереди запросов по имени.
[in, optional] SecurityAttributes
Указатель на структуру SECURITY_ATTRIBUTES, содержащую разрешения доступа для очереди запросов.
Этот параметр должен быть null при открытии существующей очереди запросов.
[in, optional] Flags
Параметр флагов определяет область очереди запросов. Этот параметр может быть одним или несколькими из следующих:
[out] RequestQueueHandle
Указатель на переменную, которая получает дескриптор в очередь запроса. Этот параметр должен содержать допустимый указатель; не может быть null.
Возвращаемое значение
Если функция выполнена успешно, она возвращает NO_ERROR
Если функция завершается ошибкой, она возвращает один из следующих кодов ошибок.
Ценность | Значение |
---|---|
|
Параметр версии |
|
Длина в байтах имени очереди запроса не может превышать MAX_PATH.
Параметр HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER можно задать только при создании очереди запросов. HTTP_CREATE_REQUEST_QUEUE_FLAG_OPEN_EXISTING можно задать только в том случае, если у приложения есть разрешение на открытие существующей очереди запросов. В этом случае параметр pReqQueueHandle должен быть допустимым указателем, а параметр pName должен содержать допустимое имя очереди запроса; его нельзя null. Параметр pReqQueueHandle, возвращаемый HttpCreateRequestQueueNULL. |
|
Параметр pName конфликтует с существующей очередью запросов, содержащей идентичное имя. |
|
У вызывающего процесса нет разрешения на открытие очереди запросов. |
|
Приложение не вызывает httpInitialize до вызова HttpCreateRequestQueue. |
Замечания
API HTTP-сервера поддерживает существующие приложения с помощью очередей запросов версии 1.0, однако новые разработки с ПОМОЩЬЮ API HTTP-сервера должны использовать HttpCreateRequestQueue для создания очередей запросов; не следует использовать HttpCreateHttpHandle. API версии 2.0 совместим только с очередями запросов версии 2.0, созданными HttpCreateRequestQueue.
Для очередей запросов HTTP версии 2 требуется ручная настройка; приложение должно создать группы URL-адресов и связать одну или несколько групп URL-адресов с очередью запросов путем вызова HttpSetUrlGroupProperty с HttpServerBindingProperty. Приложение настраивает очередь запросов путем вызова
Атрибуты безопасности могут быть предоставлены в параметре pSecurityAttributes только при создании очереди запросов. Только приложение, создающее очередь запросов, может задать списки управления доступом (ACL) в дескрипторе очереди запросов, чтобы разрешить процессы (кроме приложения-создателя) открывать, получать запросы и отправлять ответы в дескриптор очереди запроса. По умолчанию приложениям запрещено открывать очередь запросов, если они не были предоставлены разрешения в ACL.
Процесс создателя может использовать флаг HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER, чтобы указать, что он не хочет получать http-запросы.
HttpCreateRequestQueue позволяет приложениям открывать существующую очередь запросов с флагом HTTP_CREATE_REQUEST_QUEUE_FLAG_OPEN_EXISTING и извлекать дескриптор в очередь запросов. Приложения без контроллера могут использовать этот дескриптор для выполнения операций ввода-вывода HTTP. Только приложение, создающее очередь запросов, может задать свойства для него, вызвав HttpSetRequestQueueProperty.
Дескриптор очереди запросов, созданной HttpCreateRequestQueue, должен быть закрыт путем вызова HttpCloseRequestQueue до завершения работы приложения или когда сеанс больше не требуется.
Приложения должны вызывать httpInitialize перед вызовом HttpCreateRequestQueue.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows Vista [только классические приложения] |
минимальный поддерживаемый сервер | Windows Server 2008 [только классические приложения] |
целевая платформа | Виндоус |
заголовка | http.h |
библиотеки |
Httpapi.lib |
DLL | Httpapi.dll |
См. также