structure DNS_QUERY_RAW_REQUEST (windns.h)
Important
Certaines informations se rapportent à un produit de préversion qui peut être sensiblement modifié avant sa commercialisation. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Représente une requête DNS brute (consultez DnsQueryRaw).
Syntaxe
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;
Membres
version
Type : ULONG
Version de cette structure. Actuellement, il n’existe que DNS_QUERY_RAW_REQUEST_VERSION1 (0x1).
resultsVersion
Type : ULONG
Version demandée de la structure DNS_QUERY_RAW_RESULT retournée dans le rappel d’achèvement. Actuellement, il n’existe que DNS_QUERY_RAW_RESULT_VERSION1 (0x1).
dnsQueryRawSize
Type : ULONG
Taille de la mémoire tampon de requête brute DNS, en octets, pointée par dnsQueryRaw.
dnsQueryRaw
Type : BYTE*
Pointeur vers la mémoire tampon contenant la requête brute DNS. Cette mémoire tampon contient la représentation filaire d’une requête DNS, un en-tête de 12 octets suivi de la section de la question. Cette mémoire tampon appartient à l’appelant et doit être conservée uniquement jusqu’à ce que DnsQueryRaw retourne .
dnsQueryName
Type : PWSTR
Pointeur vers une chaîne qui représente le nom DNS à interroger, utilisé conjointement avec dnsQueryType. Si cette valeur est présente, elle sera utilisée au lieu de dnsQueryRaw.
dnsQueryType
Type : USHORT
Valeur qui représente le type d’enregistrement DNS de la requête, utilisée conjointement avec dnsQueryName. Ces valeurs sont documentées dans les types d’enregistrements DNS.
queryOptions
Type : ULONG64
Options de requête à utiliser. Utilise les mêmes options de requête de DnsQueryEx, comme indiqué dans options de requête DNS.
interfaceIndex
Type : ULONG
Index d’interface sur laquelle envoyer la requête. Si la valeur est 0, toutes les interfaces seront utilisées.
queryCompletionCallback
Type : DNS_QUERY_RAW_COMPLETION_ROUTINE
Pointeur vers une fonction de rappel qui sera appelée à la fin de la requête. Ce champ doit obligatoirement être renseigné.
queryContext
Type : VOID*
Pointeur vers un contexte utilisateur. Il sera fourni en tant que paramètre dans l’appel queryCompletionCallback . Ce champ doit obligatoirement être renseigné.
queryRawOptions
Type : ULONG64
Options supplémentaires pour modifier la requête brute.
DNS_QUERY_RAW_OPTION_BEST_EFFORT_PARSE (0x1). Spécifie que la requête brute doit être analysée de manière optimale. Cela signifie que DnsQueryRaw n’échouera pas dans le cas d’une requête brute d’entrée dont le format est différent de celui attendu (par exemple, l’inclusion de nouveaux types d’enregistrements ou de bits d’en-tête dont l’implémentation n’a pas connaissance) s’il peut extraire les informations nécessaires, y compris le nom et le type de requête. Ainsi, la requête envoyée au serveur est en fait un sous-ensemble de la requête de l’appelant en ce qui concerne la configuration.
customServersSize
Type : ULONG
Nombre de serveurs personnalisés pointés vers par customServers.
customServers
Type : DNS_CUSTOM_SERVER*
Pointeur vers un tableau de serveurs personnalisés de taille customServersSize. Ce pointeur peut être NULL
, auquel cas customServersSize doit être 0. Si ce n’est pas NULL
, ce pointeur doit persister jusqu’à ce que l’appel DnsQueryRaw retourne .
protocol
Type : ULONG
Protocole DNS utilisé pour la requête source dans dnsQueryRaw, et dans quoi l’appelant attend la réponse. Vous pouvez l’utiliser pour modifier une réponse de requête DNS pour qu’elle corresponde à la requête d’origine, quel que soit le protocole utilisé par le système DNS en dessous. Par exemple, si l’appelant spécifie UDP et que les systèmes DNS décident d’utiliser DNS sur HTTPS (DoH) et qu’ils obtiennent une réponse supérieure à ce qu’UDP autorise, l’API tronquera le paquet en fonction du comportement d’un serveur UDP si le résultat est trop volumineux. Si TCP est demandé par l’appelant, le paquet doit être précédé d’une longueur de 2 octets, comme spécifié dans la section 4.2.2 de la RFC 1035.
Les valeurs autorisées sont DNS_PROTOCOL_UDP (0x1) et DNS_PROTOCOL_TCP (0x2).
sourceAddr
Type : SOCKADDR_INET
Adresse de la source de la requête brute DNS.
maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH]
Type : CHAR[]
Adresse de la source de la requête brute DNS. Vous pouvez utiliser le tableau maxSa dans du code dont le type SOCKADDR_INET n’est pas défini.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | windns.h |