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搭配使用。 這些值記載於
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
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的
允許的值是 DNS_PROTOCOL_UDP(0x1)和 DNS_PROTOCOL_TCP(0x2)。
sourceAddr
DNS 原始查詢來源的位址。
maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH]
類型:CHAR[]
DNS 原始查詢來源的位址。 您可以在未定義 SOCKADDR_INET 類型的程式代碼中使用 maxSa 陣列。
要求
要求 | 價值 |
---|---|
標頭 | windns.h |