Condividi tramite


Funzione HttpQueryRequestProperty

Consente a un'applicazione di accedere a informazioni dettagliate su una richiesta. Per lo più statistiche sul flusso di connessione, ma anche l'indicazione del nome del server (SNI, Server Name Indication), presenta il nome di dominio del server richiesto dal client al server in modo che possa selezionare il certificato corretto, tra gli altri motivi, e altri tratti della connessione TLS sottostante (se applicabile).

La struttura HTTP_REQUEST viene compilata con le informazioni necessarie praticamente per ogni applicazione server per rispondere a una richiesta e HttpQueryRequestProperty consiste nel ottenere dati di diagnostica utili su una richiesta o informazioni più dettagliate in cui saranno effettivamente necessarie. La maggior parte delle applicazioni non è preoccupata per la suddivisione precisa dei tempi per le chiamate API, ma le applicazioni o i team molto grandi o molto basati sulle prestazioni potrebbero volere tali dettagli per migliorare il debug. Tenere tuttavia presente che esiste un costo associato alla raccolta o al recupero della maggior parte dei dati coperti da HttpQueryRequestProperty.

Mentre HttpSetRequestProperty funziona su soli due valori in HTTP_REQUEST_PROPERTY, la funzione HttpQueryRequestProperty funziona su tutti.

Per informazioni su come chiamare la funzione, vedere La sezione Osservazioni .

Sintassi

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
);

Parametri

RequestQueueHandle

Tipo: _In_ HANDLE

Handle per la coda di richieste in cui è stata ricevuta la richiesta sottoposta a query.

Id

Tipo: _In_ HTTP_OPAQUE_ID

ID opaco della richiesta.

PropertyId

Tipo: _In_ HTTP_REQUEST_PROPERTY

Membro dell'enumerazione HTTP_REQUEST_PROPERTY che descrive il tipo di proprietà impostato. L'enumerazione include note sulle proprietà supportate e su come abilitarle.

Qualifier

Tipo: _In_reads_bytes_opt_(QualifierSize) VOID *

Parametro facoltativo necessario per alcuni valori di PropertyId per identificare i limiti sui dati richiesti. Per le opzioni Statistiche, può essere usato per definire l'intervallo di tempo per esaminare le statistiche di connessione.

QualifierSize

Tipo: _In_ ULONG

Dimensione della struttura passata in Qualificatore. Se Qualifier è NULL, impostare su 0.

Output

Tipo: _Out_writes_bytes_to_opt_(OutputBufferSize, *BytesReturned) PVOID

Riceve il contenuto della proprietà richiesta. L'utente è responsabile dell'allocazione e della liberazione di questo buffer. Per molte proprietà, si tratta di un buffer a dimensione fissa a seconda della proprietà richiesta. Vedere HTTP_REQUEST_PROPERTY per le specifiche di una determinata proprietà.

Quando una proprietà restituisce un buffer a lunghezza variabile, è possibile eseguire il probe delle dimensioni del buffer necessario lasciando questo parametro NULLe passando un puntatore per BytesReturned. Per altri dettagli, vedere HTTP_REQUEST_PROPERTY.

OutputBufferSize

Tipo: _In_ ULONG

Dimensioni del buffer passato in Output o 0 se è NULL.

BytesReturned

Tipo: _Out_opt_ PULONG

Restituisce il numero di byte scritti in Output. In alternativa, per le proprietà a lunghezza variabile, può restituire le dimensioni del buffer necessarie se Output non è abbastanza grande. Per le proprietà a lunghezza variabile, è necessario chiamare prima con Output impostato su NULL in modo da poter recuperare tramite BytesReturned le dimensioni del buffer necessarie, quindi allocare tale quantità di memoria, quindi ripetere la query.

Overlapped

Tipo: _In_opt_ LPOVERLAPPED

Sebbene sia possibile fornire una struttura OVERLAPPED per l'operazione asincrona, l'impostazione di questo parametro non garantisce che l'API venga eseguita in modo asincrono; la maggior parte delle operazioni su questa API è sempre sincrona. L'evento in questa struttura viene usato solo se l'API restituisce ERROR_IO_PENDING.

Valore restituito

Tipo: ULONG

Se la funzione ha esito positivo, il valore restituito viene ERROR_SUCCESS. Se viene specificata una struttura OVERLAPPED e la funzione viene eseguita in modo asincrono, ERROR_IO_PENDING verrà restituita e non è un errore.

Se la funzione ha esito negativo, il valore restituito è uno dei codici di errore seguenti:

Codice restituito Descrizione
ERROR_INVALID_PARAMETER Uno o più argomenti non sono validi.
ERROR_INVALID_FUNCTION La richiesta non supporta la proprietà su cui è stata eseguita una query.
ERROR_MORE_DATA Le dimensioni del buffer di output non sono sufficienti, allocare un buffer più grande per la richiesta successiva.
Altro Controllare i codici di errore di sistema definiti in WinError.h

Osservazioni:

Questa funzione non dispone di un file di intestazione o di libreria associato. L'applicazione può chiamare LoadLibrary con il nome della DLL (httpapi.dll) per ottenere un handle di modulo. Può quindi chiamare GetProcAddress con l'handle del modulo e il nome di questa funzione per ottenere l'indirizzo della funzione.

Requisiti

   
Client minimo supportato Windows 10, versione 1709 [solo app desktop]
Server minimo supportato Windows Server, versione 1709 [solo app desktop]
Piattaforma di destinazione Finestre
Intestazione Nessuno
Biblioteca Nessuno
DLL httpapi.dll

Vedere anche