Compartir a través de


estructura DNS_QUERY_RAW_RESULT (windns.h)

Importante

Cierta información se relaciona con un producto de versión preliminar que puede modificarse sustancialmente antes de su lanzamiento comercial. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.

Representa un resultado de consulta sin formato DNS (consulte DNS_QUERY_RAW_COMPLETION_ROUTINE).

Sintaxis

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;

Miembros

version

Tipo: ULONG

Versión de esta estructura. Esto coincide con lo que se estableció en DNS_QUERY_RAW_REQUEST::resultsVersion. Actualmente solo existe DNS_QUERY_RAW_RESULT_VERSION1 (0x1).

queryStatus

Tipo: DNS_STATUS

Estado de la consulta.

queryOptions

Tipo: ULONG64

Opciones de consulta que se usaron en esta consulta. Debido a la configuración del sistema, pueden ser diferentes de las opciones de consulta que proporcionó en la solicitud. Las opciones actuales se definen en las opciones de consulta dns.

queryRawOptions

Tipo: ULONG64

Opciones adicionales que se aplicaron a la consulta sin formato. Consulte también DNS_QUERY_RAW_REQUEST::queryRawOptions.

responseFlags

Tipo: ULONG64

Marcas adicionales sobre la respuesta de la consulta. Actualmente no se especifica ninguno.

queryRawResponseSize

Tipo: ULONG

Recuento de bytes en el búfer de respuesta sin formato DNS al que apunta queryRawResponse.

queryRawResponse

Tipo: BYTE*

Puntero a un búfer que contiene la representación de conexión de la respuesta de consulta DNS: un encabezado de 12 bytes seguido de un número variable de registros. Este búfer es de tamaño queryRawResponseSize bytes.

El puntero podría ser o no válido en función de queryStatus. Los errores dns internos generarían un estado de error y un NULL puntero, pero las respuestas negativas del servidor podrían producir el estado de error y un puntero válido. Si queryStatus es ERROR_SUCCESS, el puntero es válido.

queryRecords

Tipo: PDNS_RECORD

Puntero a una estructura de DNS_RECORD . Contiene los mismos registros que en queryRawResponse, pero se analiza en un formato de estructura.

Este puntero es válido de la misma manera que queryRawResponse, donde depende del valor queryStatus .

queryRecords contiene los mismos registros que en queryRawResponse, pero se analiza en un formato de estructura. Sin embargo, si hay un nuevo tipo de registro DNS en la respuesta que no conoce la implementación, eso no estará presente en queryRecords; pero estará presente en queryRawResponse.

protocol

Tipo: ULONG

Protocolo DNS usado para la respuesta de consulta. Esto no coincide necesariamente con el protocolo en DNS_QUERY_RAW_REQUEST porque es posible que el sistema DNS haya cambiado el protocolo de consulta saliente en función de la configuración. La respuesta de consulta se modificará, si es necesario, para que coincida con el protocolo de la solicitud para que el comportamiento visto por el autor de la llamada sea sin problemas. Un valor de DNS_PROTOCOL_NO_WIRE indica que los registros de resultados y los datos se produjeron internamente y el sistema DNS no envió una consulta en la conexión.

Los valores posibles son:

  • DNS_PROTOCOL_UNSPECIFIED (0x0). La consulta se completó sin recibir una respuesta; como en una cancelación.
  • DNS_PROTOCOL_UDP (0x1).
  • DNS_PROTOCOL_TCP (0x2).
  • DNS_PROTOCOL_DOH (0x3).
  • DNS_PROTOCOL_DOT (0x4).
  • DNS_PROTOCOL_NO_WIRE (0x5). Consulta completada insertada; por ejemplo, con registros de la memoria caché.

sourceAddr

Tipo: SOCKADDR_INET

Dirección del origen de la respuesta sin procesar de DNS.

maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH]

Tipo: CHAR[]

Dirección del origen de la respuesta sin procesar de DNS. Puede usar la matriz maxSa en el código que no tiene definido el tipo SOCKADDR_INET .

Requisitos

Requisito Valor
Header windns.h