Freigeben über


DNS_QUERY_RAW_REQUEST Struktur (windns.h)

Wichtig

Einige Informationen beziehen sich auf ein Vorabversionsprodukt, das vor der kommerziellen Veröffentlichung erheblich geändert werden kann. Microsoft übernimmt keine Gewährleistungen, ausdrücklich oder konkludent in Bezug auf die hier bereitgestellten Informationen.

Stellt eine DNS-Rohabfrageanforderung dar (siehe DnsQueryRaw).

Syntax

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;

Angehörige

version

Typ: ULONG-

Die Version dieser Struktur. Derzeit ist nur DNS_QUERY_RAW_REQUEST_VERSION1 (0x1) vorhanden.

resultsVersion

Typ: ULONG-

Die angeforderte Version der DNS_QUERY_RAW_RESULT Struktur, die im Abschlussrückruf zurückgegeben wird. Derzeit ist nur DNS_QUERY_RAW_RESULT_VERSION1 (0x1) vorhanden.

dnsQueryRawSize

Typ: ULONG-

Größe des DNS-Rohabfragepuffers in Bytes, auf die durch dnsQueryRawverwiesen wird.

dnsQueryRaw

Typ: BYTE-*

Zeigen Sie auf den Puffer, der die DNS-Rohabfrage enthält. Dieser Puffer enthält die Drahtdarstellung einer DNS-Abfrage – einen 12-Byte-Header gefolgt vom Frageabschnitt. Dieser Puffer gehört dem Aufrufer und muss nur beibehalten werden, bis DnsQueryRaw- zurückgegeben wird.

dnsQueryName

Typ: PWSTR-

Zeigen Sie auf eine Zeichenfolge, die den zu abfragenden DNS-Namen darstellt, der in Verbindung mit dnsQueryType-verwendet wird. Wenn dieser Wert vorhanden ist, wird er anstelle dnsQueryRaw-verwendet.

dnsQueryType

Typ: USHORT-

Wert, der den DNS-Eintragstyp der Abfrage darstellt, der in Verbindung mit dnsQueryNameverwendet wird. Diese Werte werden in DNS-Eintragstypendokumentiert.

queryOptions

Typ: ULONG64

Zu verwendende Abfrageoptionen. Verwendet dieselben Abfrageoptionen aus DnsQueryEx-, wie in DNS-Abfrageoptionendokumentiert.

interfaceIndex

Typ: ULONG-

Der Schnittstellenindex zum Senden der Abfrage. Wenn 0, werden alle Schnittstellen verwendet.

queryCompletionCallback

Typ: DNS_QUERY_RAW_COMPLETION_ROUTINE

Zeigen Sie auf eine Rückruffunktion, die aufgerufen wird, wenn die Abfrage abgeschlossen ist. Dieses Feld ist erforderlich.

queryContext

Typ: VOID*

Zeiger auf einen Benutzerkontext. Dies wird als Parameter im queryCompletionCallback Aufrufs bereitgestellt. Dieses Feld ist erforderlich.

queryRawOptions

Typ: ULONG64

Zusätzliche Optionen zum Ändern der rohen Abfrage.

DNS_QUERY_RAW_OPTION_BEST_EFFORT_PARSE (0x1). Gibt an, dass die rohe Abfrage auf optimale Weise analysiert werden soll. Dies bedeutet, dass DnsQueryRaw- nicht fehlschlägt, wenn eine eingabe rohe Abfrage, die anders formatiert ist als erwartet (z. B. neue Datensatztypen oder Headerbits, die die Implementierung nicht kennt), wenn sie die erforderlichen Informationen einschließlich des Abfragenamens und -typs extrahieren kann. Dies führt dazu, dass die an den Server gesendete Abfrage effektiv eine Teilmenge der Abfrage des Aufrufers in Bezug auf die Konfiguration ist.

customServersSize

Typ: ULONG-

Die Anzahl der benutzerdefinierten Server, auf die durch customServersverwiesen wird.

customServers

Typ: DNS_CUSTOM_SERVER*

Zeigen Sie auf ein Array von benutzerdefinierten Servern customServersSize. Dieser Zeiger kann NULLwerden, in diesem Fall muss customServersSize 0 sein. Wenn nicht NULL, muss dieser Zeiger beibehalten werden, bis der DnsQueryRaw Aufruf zurückgegeben wird.

protocol

Typ: ULONG-

Das FÜR die Quellabfrage in dnsQueryRawverwendete DNS-Protokoll und was der Aufrufer erwartet, dass sich die Antwort befindet. Sie können dies verwenden, um eine DNS-Abfrageantwort so zu ändern, dass sie mit der ursprünglichen Abfrage übereinstimmt, unabhängig davon, welches Protokoll vom DNS-System darunter verwendet wird. Wenn der Aufrufer beispielsweise UDP angibt, und die DNS-Systeme entscheiden, DNS über HTTPS (DoH) zu verwenden und eine Antwort zu erhalten, die größer als UDP ist, schneidet die API das Paket entsprechend ab, um dem Verhalten eines UDP-Servers zu entsprechen, wenn das Ergebnis zu groß ist. Wenn TCP vom Aufrufer angefordert wird, muss dem Paket die 2-Byte-Länge vorangestellt werden, wie in Abschnitt 4.2.2 von RFC 1035angegeben.

Die zulässigen Werte sind DNS_PROTOCOL_UDP (0x1) und DNS_PROTOCOL_TCP (0x2).

sourceAddr

Typ: SOCKADDR_INET

Die Adresse der Quelle der DNS-Rohabfrage.

maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH]

Typ: CHAR-[]

Die Adresse der Quelle der DNS-Rohabfrage. Sie können das maxSa Array im Code verwenden, der den SOCKADDR_INET Typ nicht definiert hat.

Anforderungen

Anforderung Wert
Header- windns.h