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 系统决定使用 DNS over HTTPS (DoH) ,并得到大于 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 数组。

要求

要求
Header windns.h