Condividi tramite


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 NULL0. 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