共用方式為


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 陣列。

要求

要求 價值
標頭 windns.h