struttura DNS_QUERY_RAW_REQUEST (windns.h)
Importante
Alcune informazioni riguardano un prodotto in versione preliminare che può essere modificato in modo sostanziale prima che venga rilasciato commercialmente. Microsoft non fornisce alcuna garanzia, espressa o implicita, in relazione alle informazioni fornite qui.
Rappresenta una richiesta di query non elaborata DNS (vedere DnsQueryRaw).
Sintassi
typedef struct _DNS_QUERY_RAW_REQUEST {
ULONG version;
ULONG resultsVersion;
ULONG dnsQueryRawSize;
BYTE *dnsQueryRaw;
PWSTR dnsQueryName;
USHORT dnsQueryType;
ULONG64 queryOptions;
ULONG interfaceIndex;
DNS_QUERY_RAW_COMPLETION_ROUTINE queryCompletionCallback;
VOID *queryContext;
ULONG64 queryRawOptions;
ULONG customServersSize;
DNS_CUSTOM_SERVER *customServers;
ULONG protocol;
union {
SOCKADDR_INET sourceAddr;
CHAR maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH];
};
} DNS_QUERY_RAW_REQUEST;
Membri
version
Versione di questa struttura. Attualmente esiste solo DNS_QUERY_RAW_REQUEST_VERSION1 (0x1).
resultsVersion
Versione richiesta della struttura DNS_QUERY_RAW_RESULT restituita nel callback di completamento. Attualmente esiste solo DNS_QUERY_RAW_RESULT_VERSION1 (0x1).
dnsQueryRawSize
Dimensioni del buffer di query non elaborato DNS, in byte, a cui punta dnsQueryRaw.
dnsQueryRaw
Puntatore al buffer contenente la query non elaborata DNS. Questo buffer contiene la rappresentazione in transito di una query DNS, un'intestazione a 12 byte seguita dalla sezione della domanda. Questo buffer è di proprietà del chiamante e deve essere mantenuto solo fino a quando non DnsQueryRaw restituisce.
dnsQueryName
Tipo: pwstr
Puntatore a una stringa che rappresenta il nome DNS da eseguire per la query, usato insieme a dnsQueryType. Se questo valore è presente, verrà usato invece di dnsQueryRaw.
dnsQueryType
Valore che rappresenta il tipo di record DNS della query, utilizzato insieme a dnsQueryName. Questi valori sono documentati in tipi di record DNS.
queryOptions
Tipo: ULONG64
Opzioni di query da usare. Usa le stesse opzioni di query di DnsQueryEx, come documentato in opzioni di query DNS.
interfaceIndex
Indice dell'interfaccia su cui inviare la query. Se 0, verranno usate tutte le interfacce.
queryCompletionCallback
Tipo: DNS_QUERY_RAW_COMPLETION_ROUTINE
Puntatore a una funzione di callback che verrà chiamata al termine della query. Questo campo è obbligatorio.
queryContext
Tipo: VOID*
Puntatore a un contesto utente. Questo valore verrà fornito come parametro nella chiamata queryCompletionCallback. Questo campo è obbligatorio.
queryRawOptions
Tipo: ULONG64
Opzioni aggiuntive per modificare la query non elaborata.
DNS_QUERY_RAW_OPTION_BEST_EFFORT_PARSE (0x1). Specifica che la query non elaborata deve essere analizzata in modo ottimale. Ciò significa che DnsQueryRaw non avrà esito negativo in caso di una query non elaborata di input formattata in modo diverso dal previsto (ad esempio, inclusi i nuovi tipi di record o bit di intestazione di cui l'implementazione non è a conoscenza) se può estrarre le informazioni necessarie, tra cui il nome e il tipo di query. In questo modo la query inviata al server sarà effettivamente un subset della query del chiamante rispetto alla configurazione.
customServersSize
Numero di server personalizzati a cui punta server personalizzati.
customServers
Tipo: DNS_CUSTOM_SERVER*
Puntatore a una matrice di server personalizzati di dimensioni customServersSize. Questo puntatore può essere NULL
, nel qual caso customServersSize deve essere 0. Se non
protocol
Il protocollo DNS usato per la query di origine in dnsQueryRawe ciò che il chiamante prevede che la risposta sia presente. È possibile usarlo per modificare una risposta di query DNS in modo che corrisponda alla query originale, indipendentemente dal protocollo usato dal sistema DNS sottostante. Ad esempio, se il chiamante specifica UDP e i sistemi DNS decidono di usare DNS su HTTPS (DoH) e ottiene una risposta più grande di UDP consentita, l'API tronca il pacchetto in base al comportamento di quello con cui risponde un server UDP se il risultato è troppo grande. Se tcp viene richiesto dal chiamante, il pacchetto deve essere preceduto dalla lunghezza di 2 byte, come specificato nella sezione 4.2.2 di RFC 1035.
I valori consentiti sono DNS_PROTOCOL_UDP (0x1) e DNS_PROTOCOL_TCP (0x2).
sourceAddr
Tipo: SOCKADDR_INET
Indirizzo dell'origine della query DNS non elaborata.
maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH]
Tipo: CHAR[]
Indirizzo dell'origine della query DNS non elaborata. È possibile usare la matrice maxSa nel codice che non dispone del tipo SOCKADDR_INET definito.
Fabbisogno
Requisito | Valore |
---|---|
intestazione |
windns.h |