structure DNS_QUERY_RAW_REQUEST (windns.h)
Important
Certaines informations concernent un produit de préversion qui peut être sensiblement modifié avant sa publication commerciale. Microsoft n’offre aucune garantie, expresse ou implicite, en ce qui concerne les informations fournies ici.
Représente une requête de requête brute DNS (voir 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
Version de cette structure. Actuellement, seul DNS_QUERY_RAW_REQUEST_VERSION1 (0x1) existe.
resultsVersion
Version demandée de la structure DNS_QUERY_RAW_RESULT retournée dans le rappel d’achèvement. Actuellement, seul DNS_QUERY_RAW_RESULT_VERSION1 (0x1) existe.
dnsQueryRawSize
Taille de la mémoire tampon de requête brute DNS, en octets, pointée par dnsQueryRaw.
dnsQueryRaw
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 question. Cette mémoire tampon appartient à l’appelant et doit persister 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
Valeur qui représente le type d’enregistrement DNS de la requête, utilisée conjointement avec dnsQueryName. Ces valeurs sont documentées dans types d’enregistrements DNS.
queryOptions
Type : ULONG64
Options de requête à utiliser. Utilise les mêmes options de requête à partir de dnsQueryEx, comme documenté dans options de requête DNS.
interfaceIndex
Index d’interface à envoyer la requête. Si 0, toutes les interfaces seront utilisées.
queryCompletionCallback
Type : DNS_QUERY_RAW_COMPLETION_ROUTINE
Pointeur vers une fonction de rappel qui sera appelée une fois la requête terminée. Ce champ est obligatoire.
queryContext
Type : VOID*
Pointeur vers un contexte utilisateur. Cela sera fourni en tant que paramètre dans l’appel queryCompletionCallback. Ce champ est obligatoire.
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 ne échouera pas en cas de requête brute d’entrée qui est mise en forme différemment de la requête attendue (par exemple, y compris les nouveaux types d’enregistrements ou bits d’en-tête dont l’implémentation n’est pas consciente) si elle peut extraire les informations nécessaires, y compris le nom de la requête et le type. Cela entraîne l’envoi de la requête au serveur en tant que sous-ensemble de la requête de l’appelant par rapport à la configuration.
customServersSize
Nombre de serveurs personnalisés pointés 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
Protocole DNS utilisé pour la requête source dans dnsQueryRaw, et ce que l’appelant attend de 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 via HTTPS (DoH) et obtient une réponse supérieure à l’autorisation UDP, l’API tronque le paquet en fonction du comportement de ce qu’un serveur UDP répond si le résultat est trop volumineux. Si TCP est demandé par l’appelant, le paquet doit être précédé de la longueur de 2 octets, comme spécifié dans la section 4.2.2 de 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 le code qui n’a pas le type SOCKADDR_INET défini.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | windns.h |