DNS_QUERY_RAW_REQUEST结构(windns.h)
重要
某些信息与预发行产品有关,该产品在商业发布之前可能会进行大幅修改。 Microsoft对此处提供的信息不作任何明示或暗示的保证。
表示 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
dnsQueryRaw 指向的 DNS 原始查询缓冲区的大小(以字节为单位)。
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*
指向用户上下文的指针。 这将在 queryCompletionCallback 调用中作为参数提供。 此字段是必需的。
queryRawOptions
类型:ULONG64
用于修改原始查询的其他选项。
DNS_QUERY_RAW_OPTION_BEST_EFFORT_PARSE(0x1)。 指定应以最佳方式分析原始查询。 这意味着 ,如果输入原始查询的格式与预期不同(例如包括实现不知道的新记录类型或标头位),则 dnsQueryRaw 不会失败(如果它可以提取包括查询名称和类型等必要信息)。 这将导致发送到服务器的查询有效地成为调用方针对配置的查询的子集。
customServersSize
类型:ULONG
customServers指向的自定义服务器数。
customServers
指向 customServersSize大小的自定义服务器的数组的指针。 此指针可以 NULL
,在这种情况下,customServersSize 必须为 0。 如果未 NULL
,则此指针必须一直保留,直到 DnsQueryRaw 调用返回。
protocol
类型:ULONG
dnsQueryRaw中用于源查询的 DNS 协议,以及调用方期望响应位于哪个区域中。 你可以使用它更改 DNS 查询响应以匹配原始查询,而不考虑 DNS 系统在下方使用哪种协议。 例如,如果调用方指定 UDP,并且 DNS 系统决定通过 HTTPS(DoH)使用 DNS,并获取大于 UDP 允许的响应,则 API 将根据需要截断数据包,以匹配 UDP 服务器在结果过大时响应的行为。 如果调用方请求 TCP,则数据包必须以 2 字节长度作为前缀,如 RFC 1035的第 4.2.2 节中所述。
允许的值是 DNS_PROTOCOL_UDP(0x1)和 DNS_PROTOCOL_TCP(0x2)。
sourceAddr
DNS 原始查询源的地址。
maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH]
类型:CHAR[]
DNS 原始查询源的地址。 可以在未定义 SOCKADDR_INET 类型的代码中使用 maxSa 数组。
要求
要求 | 价值 |
---|---|
标头 | windns.h |