windns.h) (DNS_QUERY_RAW_RESULT 结构

重要

某些信息与预发行产品相关,该产品在商业发布之前可能会进行重大修改。 对于此处提供的信息,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

类型: SOCKADDR_INET

DNS 原始响应的源地址。

maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH]

类型: CHAR[]

DNS 原始响应的源地址。 可以在未定义 SOCKADDR_INET 类型的代码中使用 maxSa 数组。

要求

要求
Header windns.h