Freigeben über


DNS_QUERY_RAW_REQUEST Struktur (windns.h)

Wichtig

Einige Informationen beziehen sich auf ein Vorabrelease-Produkt, das vor der kommerziellen Freigabe erheblich geändert werden kann. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.

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;

Member

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 wurde. Derzeit ist nur DNS_QUERY_RAW_RESULT_VERSION1 (0x1) vorhanden.

dnsQueryRawSize

Typ: ULONG

Größe des DNS-Rohabfragepuffers in Bytes, auf den von dnsQueryRaw verwiesen wird.

dnsQueryRaw

Typ: BYTE*

Zeiger 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ückgibt.

dnsQueryName

Typ: PWSTR

Zeiger 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 von dnsQueryRaw verwendet.

dnsQueryType

Typ: USHORT

Wert, der den DNS-Eintragstyp der Abfrage darstellt, der in Verbindung mit dnsQueryName verwendet wird. Diese Werte werden in DNS-Datensatztypen dokumentiert.

queryOptions

Typ: ULONG64

Zu verwendende Abfrageoptionen. Verwendet dieselben Abfrageoptionen von DnsQueryEx, wie in DNS-Abfrageoptionen dokumentiert.

interfaceIndex

Typ: ULONG

Der Schnittstellenindex, über den die Abfrage gesendet werden soll. Wenn 0, werden alle Schnittstellen verwendet.

queryCompletionCallback

Typ: DNS_QUERY_RAW_COMPLETION_ROUTINE

Zeiger 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-Aufruf 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 optimal analysiert werden soll. Das bedeutet, dass DnsQueryRaw nicht fehlschlägt, wenn eine Unformatierte Eingabeabfrage anders formatiert ist als erwartet (z. B. neue Datensatztypen oder Headerbits, die der Implementierung nicht bekannt sind), wenn die erforderlichen Informationen, einschließlich abfragename und -typ, extrahiert werden können. 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 von customServers verwiesen wird.

customServers

Typ: DNS_CUSTOM_SERVER*

Zeiger auf ein Array benutzerdefinierter Server der Größe customServerSize. Dieser Zeiger kann sein NULL. In diesem Fall muss customServersSize 0 sein. Andernfalls NULLmuss dieser Zeiger beibehalten werden, bis der DnsQueryRaw-Aufruf zurückgibt.

protocol

Typ: ULONG

Das DNS-Protokoll, das für die Quellabfrage in dnsQueryRaw verwendet wird, und was der Aufrufer erwartet, in dem die Antwort enthalten sein soll. Sie können dies verwenden, um eine DNS-Abfrageantwort so zu ändern, dass sie der ursprünglichen Abfrage entspricht, unabhängig davon, welches Protokoll vom dns-System darunter verwendet wird. Wenn der Aufrufer beispielsweise UDP angibt und die DNS-Systeme sich für die Verwendung von DNS über HTTPS (DoH) entscheiden und eine Antwort erhält, die größer ist, als UDP zulässt, schneidet die API das Paket entsprechend dem Verhalten ab, mit dem ein UDP-Server antwortet, 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 1035 angegeben.

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 in Code verwenden, für den der SOCKADDR_INET-Typ nicht definiert ist.

Anforderungen

Anforderung Wert
Header windns.h