структура 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 |