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

类型:DNS_CUSTOM_SERVER*

指向 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

类型:SOCKADDR_INET

DNS 原始查询源的地址。

maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH]

类型:CHAR[]

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

要求

要求 价值
标头 windns.h