Compartir a través de


estructura DNS_QUERY_RAW_REQUEST (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 una solicitud de consulta sin formato DNS (consulte DnsQueryRaw).

Sintaxis

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;

Miembros

version

Tipo: ULONG

Versión de esta estructura. Actualmente solo existe DNS_QUERY_RAW_REQUEST_VERSION1 (0x1).

resultsVersion

Tipo: ULONG

La versión solicitada de la estructura DNS_QUERY_RAW_RESULT devuelta en la devolución de llamada de finalización. Actualmente solo existe DNS_QUERY_RAW_RESULT_VERSION1 (0x1).

dnsQueryRawSize

Tipo: ULONG

Tamaño del búfer de consulta sin formato DNS, en bytes, al que apunta dnsQueryRaw.

dnsQueryRaw

Tipo: BYTE*

Puntero al búfer que contiene la consulta sin procesar de DNS. Este búfer contiene la representación de conexión de una consulta DNS: un encabezado de 12 bytes seguido de la sección de preguntas. Este búfer es propiedad del autor de la llamada y solo debe conservarse hasta que DnsQueryRaw vuelva.

dnsQueryName

Tipo: PWSTR

Puntero a una cadena que representa el nombre DNS que se va a consultar, que se usa junto con dnsQueryType. Si este valor está presente, se usará en lugar de dnsQueryRaw.

dnsQueryType

Tipo: USHORT

Valor que representa el tipo de registro DNS de la consulta, que se usa junto con dnsQueryName. Estos valores se documentan en los tipos de registros DNS.

queryOptions

Tipo: ULONG64

Opciones de consulta que se van a usar. Usa las mismas opciones de consulta de DnsQueryEx, tal como se documenta en las opciones de consulta dns.

interfaceIndex

Tipo: ULONG

Índice de interfaz para enviar la consulta. Si es 0, se usarán todas las interfaces.

queryCompletionCallback

Tipo: DNS_QUERY_RAW_COMPLETION_ROUTINE

Puntero a una función de devolución de llamada a la que se llamará cuando finalice la consulta. Este campo es obligatorio.

queryContext

Tipo: VOID*

Puntero a un contexto de usuario. Esto se proporcionará como parámetro en la llamada queryCompletionCallback . Este campo es obligatorio.

queryRawOptions

Tipo: ULONG64

Opciones adicionales para modificar la consulta sin procesar.

DNS_QUERY_RAW_OPTION_BEST_EFFORT_PARSE (0x1). Especifica que la consulta sin procesar debe analizarse de la mejor manera posible. Esto significa que DnsQueryRaw no producirá un error en caso de que se produzca una consulta sin procesar de entrada con un formato diferente del esperado (por ejemplo, incluir nuevos tipos de registro o bits de encabezado de los que la implementación no es consciente) si puede extraer la información necesaria, incluido el nombre y el tipo de consulta. Esto hará que la consulta enviada al servidor sea eficazmente un subconjunto de la consulta del autor de la llamada con respecto a la configuración.

customServersSize

Tipo: ULONG

Número de servidores personalizados a los que apuntan customServers.

customServers

Tipo: DNS_CUSTOM_SERVER*

Puntero a una matriz de servidores personalizados de tamaño customServersSize. Este puntero puede ser NULL, en cuyo caso customServersSize debe ser 0. Si no es NULL, este puntero debe conservarse hasta que se devuelva la llamada DnsQueryRaw .

protocol

Tipo: ULONG

El protocolo DNS usado para la consulta de origen en dnsQueryRaw y en qué espera que el autor de la llamada esté en la respuesta. Puede usarlo para cambiar una respuesta de consulta DNS para que coincida con la consulta original, independientemente del protocolo que use el sistema DNS debajo. Por ejemplo, si el autor de la llamada especifica UDP y los sistemas DNS deciden usar DNS a través de HTTPS (DoH) y obtiene una respuesta mayor que UDP, la API truncará el paquete según corresponda para que coincida con el comportamiento de lo que responde un servidor UDP si el resultado es demasiado grande. Si el autor de la llamada solicita TCP, el paquete debe tener el prefijo de longitud de 2 bytes, como se especifica en la sección 4.2.2 de RFC 1035.

Los valores permitidos son DNS_PROTOCOL_UDP (0x1) y DNS_PROTOCOL_TCP (0x2).

sourceAddr

Tipo: SOCKADDR_INET

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

maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH]

Tipo: CHAR[]

Dirección del origen de la consulta 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