estrutura DNS_QUERY_RAW_REQUEST (windns.h)
Importante
Algumas informações referem-se a um produto de pré-lançamento que pode ser substancialmente modificado antes de ser lançado comercialmente. A Microsoft não oferece garantias, expressas ou implícitas, em relação às informações fornecidas aqui.
Representa uma solicitação de consulta bruta DNS (consulte DnsQueryRaw).
Sintaxe
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;
Membros
version
A versão dessa estrutura. Atualmente, existe apenas DNS_QUERY_RAW_REQUEST_VERSION1 (0x1).
resultsVersion
A versão solicitada da estrutura de DNS_QUERY_RAW_RESULT retornada no retorno de chamada de conclusão. Atualmente, existe apenas DNS_QUERY_RAW_RESULT_VERSION1 (0x1).
dnsQueryRawSize
Tamanho do buffer de consulta bruta DNS, em bytes, apontado por dnsQueryRaw.
dnsQueryRaw
Tipo:
Ponteiro para o buffer que contém a consulta bruta DNS. Esse buffer contém a representação de fio de uma consulta DNS — um cabeçalho de 12 bytes seguido pela seção de pergunta. Esse buffer pertence ao chamador e precisa persistir somente até que DnsQueryRaw retorne.
dnsQueryName
Ponteiro para uma cadeia de caracteres que representa o nome DNS para consulta, usado em conjunto com dnsQueryType. Se esse valor estiver presente, ele será usado em vez de dnsQueryRaw.
dnsQueryType
Valor que representa o tipo de registro DNS da consulta, usado em conjunto com dnsQueryName. Esses valores são documentados em tipos de registro DNS.
queryOptions
Tipo: ULONG64
Opções de consulta a serem usadas. Usa as mesmas opções de consulta de DnsQueryEx, conforme documentado em opções de consulta DNS.
interfaceIndex
O índice de interface para enviar a consulta. Se 0, todas as interfaces serão usadas.
queryCompletionCallback
Tipo: DNS_QUERY_RAW_COMPLETION_ROUTINE
Ponteiro para uma função de retorno de chamada que será chamada quando a consulta for concluída. Esse campo é necessário.
queryContext
Tipo: void*
Ponteiro para um contexto de usuário. Isso será fornecido como um parâmetro na chamada queryCompletionCallback. Esse campo é necessário.
queryRawOptions
Tipo: ULONG64
Opções adicionais para modificar a consulta bruta.
DNS_QUERY_RAW_OPTION_BEST_EFFORT_PARSE (0x1). Especifica que a consulta bruta deve ser analisada de forma de melhor esforço. Isso significa que DnsQueryRaw não falharão no caso de uma consulta bruta de entrada formatada de forma diferente do esperado (como incluir novos tipos de registro ou bits de cabeçalho que a implementação não está ciente) se puder extrair as informações necessárias, incluindo o nome e o tipo da consulta. Isso fará com que a consulta enviada ao servidor seja efetivamente um subconjunto da consulta do chamador em relação à configuração.
customServersSize
O número de servidores personalizados apontados por customServers.
customServers
Tipo: DNS_CUSTOM_SERVER*
Ponteiro para uma matriz de servidores personalizados de tamanho customServersSize. Esse ponteiro pode ser NULL
; nesse caso, customServersSize deve ser 0. Se não NULL
, esse ponteiro deverá persistir até que a chamada DnsQueryRaw retorne.
protocol
O protocolo DNS usado para a consulta de origem no dnsQueryRawe no que o chamador espera que a resposta esteja. Você pode usá-lo para alterar uma resposta de consulta DNS para corresponder à consulta original, independentemente de qual protocolo é usado pelo sistema DNS abaixo. Por exemplo, se o chamador especificar UDP e os sistemas DNS decidirem usar DNS sobre HTTPS (DoH) e receber uma resposta maior do que o UDP permite, a API truncará o pacote conforme apropriado para corresponder ao comportamento do que um servidor UDP responde se o resultado for muito grande. Se o TCP for solicitado pelo chamador, o pacote deverá ser prefixado com o comprimento de 2 bytes, conforme especificado na seção 4.2.2 de RFC 1035.
Os valores permitidos são DNS_PROTOCOL_UDP (0x1) e DNS_PROTOCOL_TCP (0x2).
sourceAddr
Tipo: SOCKADDR_INET
O endereço da origem da consulta bruta DNS.
maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH]
Tipo: char[]
O endereço da origem da consulta bruta DNS. Você pode usar a matriz de maxSa no código que não tem o tipo de SOCKADDR_INET definido.
Requisitos
Requisito | Valor |
---|---|
cabeçalho | windns.h |