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


Функция HttpQueryRequestProperty

Предоставляет приложению доступ к поиску сведений о запросе. В основном статистика потока подключения, но и указание имени сервера (SNI) представляет доменное имя сервера, запрашиваемое клиентом на сервер, чтобы он смог выбрать правильный сертификат, помимо других причин), и другие признаки базового TLS-подключения (при необходимости).

Структура HTTP_REQUEST заполняется информацией о том, что в значительной степени все серверные приложения потребуются для ответа на запрос, и HttpQueryRequestProperty — для получения полезных диагностических данных о запросе или более подробных сведений о том, где это действительно необходимо. Большинство приложений не обеспокоены точной разбивкой времени вызовов API, но очень большие или очень производительно управляемые приложениями или командами могут потребоваться эти сведения для более эффективной отладки. Но помните, что существует стоимость, связанная с сбором или получением большинства данных, охваченных HttpQueryRequestProperty.

В то время как HttpSetRequestProperty работает только на двух значениях в HTTP_REQUEST_PROPERTY, функция HttpQueryRequestProperty работает над всеми из них.

Дополнительные сведения о вызове функции см. в примечаниях .

Синтаксис

HTTPAPI_LINKAGE ULONG WINAPI
HttpQueryRequestProperty(
  _In_ HANDLE RequestQueueHandle,
  _In_ HTTP_OPAQUE_ID Id,
  _In_ HTTP_REQUEST_PROPERTY PropertyId,
  _In_reads_bytes_opt_(QualifierSize) VOID *Qualifier,
  _In_ ULONG QualifierSize,
  _Out_writes_bytes_to_opt_(OutputBufferSize, *BytesReturned) PVOID Output,
  _In_ ULONG OutputBufferSize,
  _Out_opt_ PULONG BytesReturned,
  _In_opt_ LPOVERLAPPED Overlapped
);

Параметры

RequestQueueHandle

Тип: _In_ HANDLE

Дескриптор очереди запросов, в которой был получен запрос.

Id

Тип: _In_ HTTP_OPAQUE_ID

Непрозрачный идентификатор запроса.

PropertyId

Тип: _In_ HTTP_REQUEST_PROPERTY

Элемент перечисления HTTP_REQUEST_PROPERTY , описывающий заданный тип свойства. Перечисление содержит заметки о поддерживаемых свойствах и их включении.

Qualifier

Тип: _In_reads_bytes_opt_(qualifierSize) VOID *

Необязательный параметр, необходимый для некоторых значений PropertyId , чтобы определить границы того, какие данные вы запрашиваете. Для параметров статистики можно использовать для определения периода времени для поиска статистики подключения.

QualifierSize

Тип: _In_ ULONG

Размер структуры, переданной в квалификаторе. Если квалификатор имеет значение , задайте для этого NULLзначение 0.

Output

Тип: _Out_writes_bytes_to_opt_(OutputBufferSize, *BytesReturned) PVOID

Получает содержимое запрошенного свойства. Вы несете ответственность за выделение и освобождение этого буфера. Для многих свойств это буфер фиксированного размера в зависимости от запрошенного свойства. Ознакомьтесь HTTP_REQUEST_PROPERTY с конкретными особенностями данного свойства.

Когда свойство возвращает буфер переменной длины, можно проверить размер буфера, необходимого, оставив этот параметр NULLи передав указатель для BytesReturned. Дополнительные сведения см. в HTTP_REQUEST_PROPERTY.

OutputBufferSize

Тип: _In_ ULONG

Размер буфера, передаваемого в выходных данных, или 0, если значение NULL.

BytesReturned

Тип: _Out_opt_ PULONG

Возвращает количество байтов, записанных в выходные данные. Кроме того, для свойств переменной длины можно вернуть размер буфера, необходимый, если выходные данные не были достаточно большими. Для свойств переменной длины необходимо сначала вызвать выходной набор NULL , чтобы получить с помощью BytesReturned нужный размер буфера, а затем выделить этот объем памяти, а затем повторить запрос.

Overlapped

Тип: _In_opt_ LPOVERLAPPED

Хотя вы можете предоставить структуру OVERLAPPED для асинхронной операции, установка этого параметра не гарантирует, что API будет выполняться асинхронно; Большинство операций с этим API всегда синхронны. Событие в этой структуре используется только в том случае, если API возвращает ERROR_IO_PENDING.

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

Тип: ULONG

Если функция выполнена успешно, возвращаемое значение ERROR_SUCCESS. Если предоставляется структура OVERLAPPED и функция выполняется асинхронно, то возвращается ERROR_IO_PENDING и не является ошибкой.

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

Код возврата Описание
ERROR_INVALID_PARAMETER Один или несколько аргументов недопустимы.
ERROR_INVALID_FUNCTION Запрос не поддерживает запрошенное свойство.
ERROR_MORE_DATA Размер выходного буфера недостаточно, выделите больший буфер для следующего запроса.
Другое Проверьте коды системных ошибок , определенные в WinError.h

Замечания

Эта функция не содержит связанного файла заголовка или файла библиотеки. Приложение может вызывать LoadLibrary с именем DLL (httpapi.dll) для получения дескриптора модуля. Затем он может вызвать GetProcAddress с дескриптором модуля и именем этой функции, чтобы получить адрес функции.

Требования

   
Минимальный поддерживаемый клиент Windows 10 версии 1709 [только классические приложения]
Минимальный поддерживаемый сервер Windows Server версии 1709 [только классические приложения]
Целевая платформа Виндоус
Заголовок Отсутствует
Библиотека Отсутствует
Библиотека dll httpapi.dll

См. также