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

Type : ULONG

Version de cette structure. Actuellement, seul DNS_QUERY_RAW_REQUEST_VERSION1 (0x1) existe.

resultsVersion

Type : ULONG

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

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 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

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 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

Type : ULONG

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

Type : ULONG

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

Type : ULONG

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