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


Функция 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

Параметр флагов определяет область очереди запросов. Этот параметр может быть одним или несколькими из следующих:

Ценность Значение
HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER
Дескриптор очереди запросов, созданной с помощью этого флага, нельзя использовать для выполнения операций ввода-вывода. Этот флаг можно задать только при создании дескриптора очереди запроса.
HTTP_CREATE_REQUEST_QUEUE_FLAG_OPEN_EXISTING
Флаг HTTP_CREATE_REQUEST_QUEUE_FLAG_OPEN_EXISTING позволяет приложениям открывать существующую очередь запросов по имени и извлекать дескриптор очереди запросов. Параметр pName должен содержать допустимое имя очереди запросов; не может быть null.

[out] RequestQueueHandle

Указатель на переменную, которая получает дескриптор в очередь запроса. Этот параметр должен содержать допустимый указатель; не может быть null.

Возвращаемое значение

Если функция выполнена успешно, она возвращает NO_ERROR

Если функция завершается ошибкой, она возвращает один из следующих кодов ошибок.

Ценность Значение
ERROR_REVISION_MISMATCH
Параметр версии содержит недопустимую версию.
ERROR_INVALID_PARAMETER
Длина в байтах имени очереди запроса не может превышать MAX_PATH.

Параметр pSecurityAttributes должен быть null при открытии существующей очереди запросов.

HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER можно задать только при создании очереди запросов.

HTTP_CREATE_REQUEST_QUEUE_FLAG_OPEN_EXISTING можно задать только в том случае, если у приложения есть разрешение на открытие существующей очереди запросов. В этом случае параметр pReqQueueHandle должен быть допустимым указателем, а параметр pName должен содержать допустимое имя очереди запроса; его нельзя null.

Параметр pReqQueueHandle, возвращаемый HttpCreateRequestQueueNULL.

ERROR_ALREADY_EXISTS
Параметр pName конфликтует с существующей очередью запросов, содержащей идентичное имя.
ERROR_ACCESS_DENIED
У вызывающего процесса нет разрешения на открытие очереди запросов.
ERROR_DLL_INIT_FAILED
Приложение не вызывает httpInitialize до вызова HttpCreateRequestQueue.

Замечания

API HTTP-сервера поддерживает существующие приложения с помощью очередей запросов версии 1.0, однако новые разработки с ПОМОЩЬЮ API HTTP-сервера должны использовать HttpCreateRequestQueue для создания очередей запросов; не следует использовать HttpCreateHttpHandle. API версии 2.0 совместим только с очередями запросов версии 2.0, созданными HttpCreateRequestQueue.

Для очередей запросов HTTP версии 2 требуется ручная настройка; приложение должно создать группы URL-адресов и связать одну или несколько групп URL-адресов с очередью запросов путем вызова HttpSetUrlGroupProperty с HttpServerBindingProperty. Приложение настраивает очередь запросов путем вызова HttpSetRequestQueueProperty с требуемой конфигурацией в параметре свойства . Дополнительные сведения о создании и настройке групп URL-адресов см. в разделе HttpCreateUrlGroup и HttpSetUrlGroupProperty.

Атрибуты безопасности могут быть предоставлены в параметре 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

См. также

ФУНКЦИИ API HTTP-сервера версии 2.0

HttpCloseRequestQueue

HttpCreateHttpHandle

HttpQueryRequestQueueProperty

HttpSetRequestQueueProperty

HttpShutdownRequestQueue