Compartilhar via


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

Tipo: ULONG

A versão dessa estrutura. Atualmente, existe apenas DNS_QUERY_RAW_REQUEST_VERSION1 (0x1).

resultsVersion

Tipo: ULONG

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

Tipo: ULONG

Tamanho do buffer de consulta bruta DNS, em bytes, apontado por dnsQueryRaw.

dnsQueryRaw

Tipo: BYTE

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

Tipo: PWSTR

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

Tipo: USHORT

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

Tipo: ULONG

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

Tipo: ULONG

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

Tipo: ULONG

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