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


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

Важно!

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

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

Синтаксис

typedef struct _DNS_QUERY_RAW_RESULT {
  ULONG       version;
  DNS_STATUS  queryStatus;
  ULONG64     queryOptions;
  ULONG64     queryRawOptions;
  ULONG64     responseFlags;
  ULONG       queryRawResponseSize;
  BYTE        *queryRawResponse;
  PDNS_RECORD queryRecords;
  ULONG       protocol;
  union {
    SOCKADDR_INET sourceAddr;
    CHAR          maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH];
  };
} DNS_QUERY_RAW_RESULT;

Члены

version

Тип: ULONG

Версия этой структуры. Это соответствует тому, что было задано в DNS_QUERY_RAW_REQUEST::resultsVersion. В настоящее время существует только DNS_QUERY_RAW_RESULT_VERSION1 (0x1).

queryStatus

Тип: DNS_STATUS

Состояние запроса.

queryOptions

Тип: ULONG64

Параметры запроса, которые использовались в этом запросе. Из-за конфигурации системы они могут отличаться от параметров запроса, указанных в запросе. Текущие параметры определяются в параметрах запроса DNS.

queryRawOptions

Тип: ULONG64

Дополнительные параметры, примененные к необработанному запросу. См. также DNS_QUERY_RAW_REQUEST::queryRawOptions.

responseFlags

Тип: ULONG64

Дополнительные флаги ответа на запрос. В настоящее время они не указаны.

queryRawResponseSize

Тип: ULONG

Количество байтов в буфере необработанных ответов DNS, на который указывает queryRawResponse.

queryRawResponse

Тип: BYTE*

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

Указатель может быть допустимым или недопустимым в зависимости от queryStatus. Внутренние ошибки DNS создают состояние ошибки и NULL указатель, но отрицательные ответы от сервера могут привести к возникновению ошибки и допустимому указателю. Если параметр queryStatus ERROR_SUCCESS, то указатель является допустимым.

queryRecords

Тип: PDNS_RECORD

Указатель на структуру DNS_RECORD . Он содержит те же записи, что и в queryRawResponse, но анализируется в формате структуры.

Этот указатель действителен так же, как и queryRawResponse, где он зависит от значения queryStatus .

queryRecords содержит те же записи, что и в queryRawResponse, но анализируется в формате структуры. Однако если в ответе есть новый тип записи DNS, который неизвестен реализации, он не будет присутствовать в queryRecords; но он будет присутствовать в queryRawResponse.

protocol

Тип: ULONG

Протокол DNS, используемый для ответа на запрос. Это не обязательно соответствует протоколу в DNS_QUERY_RAW_REQUEST , так как система DNS могла изменить протокол исходящего запроса в зависимости от конфигурации. При необходимости ответ запроса будет изменен в соответствии с протоколом в запросе, чтобы поведение вызывающего объекта было простым. Значение DNS_PROTOCOL_NO_WIRE указывает, что результирующих записей и данных были созданы внутренним образом, а система DNS не отправляла запрос по сети.

Возможные значения:

  • DNS_PROTOCOL_UNSPECIFIED (0x0). Запрос выполнен без получения ответа; например, в отмене.
  • DNS_PROTOCOL_UDP (0x1).
  • DNS_PROTOCOL_TCP (0x2).
  • DNS_PROTOCOL_DOH (0x3).
  • DNS_PROTOCOL_DOT (0x4).
  • DNS_PROTOCOL_NO_WIRE (0x5). Запрос выполнен в встроенном коде; например, с записями из кэша.

sourceAddr

Тип: SOCKADDR_INET

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

maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH]

Тип: CHAR[]

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

Требования

Требование Значение
Заголовок windns.h