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