structure DNS_QUERY_RAW_RESULT (windns.h)

Important

Certaines informations se rapportent à un produit de préversion qui peut être considérablement modifié avant sa commercialisation. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.

Représente un résultat de requête brute DNS (voir DNS_QUERY_RAW_COMPLETION_ROUTINE).

Syntaxe

typedef struct _DNS_QUERY_RAW_RESULT {
  ULONG       version;
  DNS_STATUS  queryStatus;
  ULONG64     queryOptions;
  ULONG64     queryRawOptions;
  ULONG64     responseFlags;
  ULONG       queryRawResponseSize;
  BYTE        *queryRawResponse;
  PDNS_RECORD queryRecords;
  ULONG       protocol;
  union {
    SOCKADDR_INET sourceAddr;
    CHAR          maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH];
  };
} DNS_QUERY_RAW_RESULT;

Membres

version

Type : ULONG

Version de cette structure. Cela correspond à ce qui a été défini dans DNS_QUERY_RAW_REQUEST ::resultsVersion. Actuellement, il n’existe que DNS_QUERY_RAW_RESULT_VERSION1 (0x1).

queryStatus

Type : DNS_STATUS

Status de la requête.

queryOptions

Type : ULONG64

Options de requête utilisées dans cette requête. En raison de la configuration du système, celles-ci peuvent être différentes des options de requête que vous avez fournies dans la demande. Les options actuelles sont définies dans les options de requête DNS.

queryRawOptions

Type : ULONG64

Options supplémentaires appliquées à la requête brute. Consultez également DNS_QUERY_RAW_REQUEST ::queryRawOptions.

responseFlags

Type : ULONG64

Indicateurs supplémentaires sur la réponse à la requête. Actuellement, aucun n’est spécifié.

queryRawResponseSize

Type : ULONG

Nombre d’octets dans la mémoire tampon de réponse brute DNS pointée par queryRawResponse.

queryRawResponse

Type : BYTE*

Pointeur vers une mémoire tampon contenant la représentation filaire de la réponse de requête DNS, un en-tête de 12 octets suivi d’un nombre variable d’enregistrements. Cette mémoire tampon est de taille queryRawResponseSize octets.

Le pointeur peut ou non être valide en fonction de queryStatus. Les erreurs DNS internes produisent une erreur status et un NULL pointeur, mais des réponses négatives du serveur peuvent générer une erreur status et un pointeur valide. Si queryStatus est ERROR_SUCCESS, le pointeur est valide.

queryRecords

Type : PDNS_RECORD

Pointeur vers une structure DNS_RECORD . Il contient les mêmes enregistrements que dans queryRawResponse, mais analysés dans un format de structure.

Ce pointeur est valide de la même manière que queryRawResponse, où il dépend de la valeur queryStatus .

queryRecords contient les mêmes enregistrements que dans queryRawResponse, mais analysés dans un format de structure. Toutefois, s’il existe un nouveau type d’enregistrement DNS dans la réponse qui n’est pas connu par l’implémentation, il ne sera pas présent dans queryRecords ; mais il sera présent dans queryRawResponse.

protocol

Type : ULONG

Protocole DNS utilisé pour la réponse à la requête. Cela ne correspond pas nécessairement au protocole dans DNS_QUERY_RAW_REQUEST , car le système DNS a peut-être modifié le protocole de requête sortant en fonction de la configuration. La réponse à la requête sera modifiée, si nécessaire, pour qu’elle corresponde au protocole dans la requête afin que le comportement observé par l’appelant soit transparent. La valeur DNS_PROTOCOL_NO_WIRE indique que les enregistrements et les données des résultats ont été générés en interne et que le système DNS n’a pas envoyé de requête sur le réseau.

Les valeurs possibles incluent :

  • DNS_PROTOCOL_UNSPECIFIED (0x0). La requête s’est terminée sans recevoir de réponse ; comme dans une annulation.
  • DNS_PROTOCOL_UDP (0x1).
  • DNS_PROTOCOL_TCP (0x2).
  • DNS_PROTOCOL_DOH (0x3).
  • DNS_PROTOCOL_DOT (0x4).
  • DNS_PROTOCOL_NO_WIRE (0x5). La requête s’est terminée en ligne ; par exemple avec les enregistrements du cache.

sourceAddr

Type : SOCKADDR_INET

Adresse de la source de la réponse brute DNS.

maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH]

Type : CHAR[]

Adresse de la source de la réponse brute DNS. Vous pouvez utiliser le tableau maxSa dans du code qui n’a pas le type SOCKADDR_INET défini.

Configuration requise

Condition requise Valeur
En-tête windns.h