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

类型:SOCKADDR_INET

DNS 原始响应源的地址。

maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH]

类型:CHAR[]

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

要求

要求 价值
标头 windns.h