Поделиться через


структура DNS_QUERY_RAW_REQUEST (windns.h)

Важный

Некоторые сведения относятся к предварительному продукту, который может быть существенно изменен до его коммерческого выпуска. Корпорация Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых в отношении информации, предоставленной здесь.

Представляет необработанный запрос DNS (см. DnsQueryRaw).

Синтаксис

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;

Члены

version

Тип: ULONG

Версия этой структуры. В настоящее время существует только DNS_QUERY_RAW_REQUEST_VERSION1 (0x1).

resultsVersion

Тип: ULONG

Запрошенная версия структуры DNS_QUERY_RAW_RESULT, возвращенная в обратном вызове завершения. В настоящее время существует только DNS_QUERY_RAW_RESULT_VERSION1 (0x1).

dnsQueryRawSize

Тип: ULONG

Размер буфера необработанных запросов DNS в байтах, указывающий на dnsQueryRaw.

dnsQueryRaw

Тип: BYTE*

Указатель на буфер, содержащий необработанный запрос DNS. Этот буфер содержит проводное представление DNS-запроса — 12-байтовый заголовок, за которым следует раздел вопроса. Этот буфер принадлежит вызывающему объекту и должен сохраняться только до тех пор, пока DnsQueryRaw возвращается.

dnsQueryName

Тип: PWSTR

Указатель на строку, представляющую DNS-имя для запроса, используемое в сочетании с dnsQueryType. Если это значение присутствует, он будет использоваться вместо dnsQueryRaw.

dnsQueryType

Тип: USHORT

Значение, представляющее тип записи DNS запроса, используемый в сочетании с dnsQueryName. Эти значения задокументированы в типах записей DNS .

queryOptions

Тип: ULONG64

Используемые параметры запроса. Использует те же параметры запроса из DnsQueryEx, как описано в параметрах запроса DNS .

interfaceIndex

Тип: ULONG

Индекс интерфейса для отправки запроса. Если значение 0, будут использоваться все интерфейсы.

queryCompletionCallback

Тип: DNS_QUERY_RAW_COMPLETION_ROUTINE

Указатель на функцию обратного вызова, которая будет вызываться после завершения запроса. Это поле является обязательным.

queryContext

Тип: VOID*

Указатель на контекст пользователя. Это будет предоставлено в качестве параметра в вызове queryCompletionCall back. Это поле является обязательным.

queryRawOptions

Тип: ULONG64

Дополнительные параметры изменения необработанного запроса.

DNS_QUERY_RAW_OPTION_BEST_EFFORT_PARSE (0x1). Указывает, что необработанный запрос должен быть проанализирован в оптимальном режиме. Это означает, что DnsQueryRaw не завершится ошибкой в случае ввода необработанного запроса, который форматируется по-разному (например, новые типы записей или биты заголовков, о которых реализация не знает), если она может извлечь необходимые сведения, включая имя запроса и тип. Это приведет к тому, что запрос, отправленный серверу, фактически будет подмножеством запроса вызывающего объекта относительно конфигурации.

customServersSize

Тип: ULONG

Количество пользовательских серверов, на которые указывает настраиваемые серверы.

customServers

Тип: DNS_CUSTOM_SERVER*

Указатель на массив пользовательских серверов размера customServersSize. Этот указатель можно NULL, в этом случае customServersSize должно быть 0. Если не NULL, этот указатель должен сохраняться до тех пор, пока вызов DnsQueryRaw возвращается.

protocol

Тип: ULONG

Протокол DNS, используемый для исходного запроса в dnsQueryRaw, и то, что вызывающий объект ожидает, что ответ будет входить. Это можно использовать для изменения ответа DNS-запроса на соответствие исходному запросу независимо от того, какой протокол используется системой DNS в нижней части. Например, если вызывающий объект указывает UDP, а системы DNS решили использовать DNS через HTTPS (DoH) и получает ответ, превышающий разрешенный UDP, API усетит пакет в соответствии с поведением, с которым отвечает сервер UDP, если результат слишком велик. Если вызывающий объект запрашивает TCP, пакет должен быть префиксирован с 2-байтовой длиной, как указано в разделе 4.2.2 RFC 1035.

Допустимые значения: DNS_PROTOCOL_UDP (0x1) и DNS_PROTOCOL_TCP (0x2).

sourceAddr

Тип: SOCKADDR_INET

Адрес источника необработанного запроса DNS.

maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH]

Тип: CHAR[]

Адрес источника необработанного запроса DNS. Вы можете использовать массив maxSa в коде, который не имеет определенного типа SOCKADDR_INET.

Требования

Требование Ценность
заголовка windns.h