DNS_QUERY_RAW_REQUEST struttura (windns.h)
Importante
Alcune informazioni si riferiscono a un prodotto di versione preliminare che può essere modificato in modo sostanziale prima che venga rilasciato commercialmente. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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;
Members
version
Tipo: ULONG
Versione di questa struttura. Attualmente esiste solo DNS_QUERY_RAW_REQUEST_VERSION1 (0x1 ).
resultsVersion
Tipo: ULONG
Versione richiesta della struttura DNS_QUERY_RAW_RESULT restituita nel callback di completamento. Attualmente esiste solo DNS_QUERY_RAW_RESULT_VERSION1 (0x1 ).
dnsQueryRawSize
Tipo: ULONG
Dimensioni del buffer di query non elaborato DNS, in byte, a cui fa riferimento dnsQueryRaw.
dnsQueryRaw
Tipo: BYTE*
Puntatore al buffer contenente la query non elaborata DNS. Questo buffer contiene la rappresentazione di filo di una query DNS, ovvero un'intestazione da 12 byte seguita dalla sezione domanda. Questo buffer è di proprietà del chiamante e deve essere persistente solo finché DnsQueryRaw non restituisce.
dnsQueryName
Tipo: PWSTR
Puntatore a una stringa che rappresenta il nome DNS da eseguire per la query, usato in combinazione con dnsQueryType. Se questo valore è presente, verrà usato anziché dnsQueryRaw.
dnsQueryType
Tipo: USHORT
Valore che rappresenta il tipo di record DNS della query, usato in combinazione con dnsQueryName. Questi valori sono documentati nei tipi di record DNS.
queryOptions
Tipo: ULONG64
Opzioni di query da usare. Usa le stesse opzioni di query di DnsQueryEx, come documentato nelle opzioni di query DNS.
interfaceIndex
Tipo: ULONG
Indice dell'interfaccia su cui inviare la query. Se 0, tutte le interfacce verranno usate.
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. 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 nel caso di una query non elaborata di input formattata in modo diverso da previsto (ad esempio, inclusi i nuovi tipi di record o bit di intestazione di cui l'implementazione non è consapevole) se può estrarre le informazioni necessarie, tra cui il nome della query e il tipo. In questo modo la query inviata al server sarà un subset della query del chiamante rispetto alla configurazione.
customServersSize
Tipo: ULONG
Numero di server personalizzati a cui puntano i server personalizzati.
customServers
Tipo: DNS_CUSTOM_SERVER*
Puntatore a una matrice di server personalizzati di dimensioni customServersSize. Questo puntatore può essere , in cui customServersSize deve essere NULL
0. In caso contrario NULL
, questo puntatore deve essere persistente finché non viene restituita la chiamata DnsQueryRaw .
protocol
Tipo: ULONG
Il protocollo DNS usato per la query di origine in dnsQueryRaw e ciò che il chiamante prevede che la risposta sia presente. È possibile usare questa operazione 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 decide di usare DNS tramite HTTPS (DoH) e ottiene una risposta più grande di UDP consentito, l'API tronca il pacchetto in base al comportamento di quello che un server UDP risponde con 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 non elaborata DNS.
maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH]
Tipo: CHAR[]
Indirizzo dell'origine della query non elaborata DNS. È possibile usare la matrice maxSa nel codice che non ha il tipo SOCKADDR_INET definito.
Requisiti
Requisito | Valore |
---|---|
Intestazione | windns.h |