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 NULL
werden, 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 |