DNS_QUERY_RAW_RESULT结构(windns.h)
重要
某些信息与预发行产品有关,该产品在商业发布之前可能会进行大幅修改。 Microsoft对此处提供的信息不作任何明示或暗示的保证。
表示 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
queryRawResponse指向的 DNS 原始响应缓冲区中的字节计数。
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
DNS 原始响应源的地址。
maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH]
类型:CHAR[]
DNS 原始响应源的地址。 可以在未定义 SOCKADDR_INET 类型的代码中使用 maxSa 数组。
要求
要求 | 价值 |
---|---|
标头 | windns.h |