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 publicación comercial. Microsoft no ofrece ninguna garantía, expresa o implícita, con respecto a la información proporcionada aquí.
Representa una solicitud de consulta sin procesar de 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:
Versión de esta estructura. Actualmente solo existe DNS_QUERY_RAW_REQUEST_VERSION1 (0x1).
resultsVersion
Tipo:
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:
Tamaño del búfer de consultas sin formato DNS, en bytes, al que apunta dnsQueryRaw.
dnsQueryRaw
Tipo:
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 devuelva.
dnsQueryName
Tipo: PWSTR de
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: de USHORT de
Valor que representa el tipo de registro DNS de la consulta, que se usa junto con dnsQueryName. Estos valores se documentan en tipos de registro 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 opciones de consulta DNS.
interfaceIndex
Tipo:
Í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 se debe analizar de forma más adecuada. Esto significa que dnsQueryRaw no producirá un error en caso de que se produzca una consulta sin procesar de entrada con el formato esperado (por ejemplo, incluir nuevos tipos de registro o bits de encabezado de los que la implementación no sea 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:
Número de servidores personalizados a los que apunta 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
protocol
Tipo:
El protocolo DNS usado para la consulta de origen en dnsQueryRawy lo que el autor de la llamada espera que la respuesta esté en. 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 permite, 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 como prefijo la 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 formato DNS.
maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH]
Dirección del origen de la consulta sin formato DNS. Puede usar la matriz maxSa en el código que no tiene definido el tipo SOCKADDR_INET.
Requisitos
Requisito | Valor |
---|---|
encabezado de |
windns.h |