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 |
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de