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

dnsQueryType と組み合わせて使用される、クエリ対象の DNS 名を表す文字列へのポインター。 この値が存在する場合は、 dnsQueryRaw の代わりに使用されます。

dnsQueryType

種類: USHORT

dnsQueryName と組み合わせて使用される、クエリの DNS レコードの種類を表す値。 これらの値については、DNS レコードの種類に関する 記事を参照してください

queryOptions

種類: ULONG64

使用するクエリ オプション。 DNS クエリ オプションに関する記事に記載されているように、 DnsQueryEx同じクエリ オプションを使用します。

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 が許可するよりも大きい応答を取得した場合、結果が大きすぎる場合に UDP サーバーが応答する動作と一致するように、API はパケットを適切に切り捨てます。 TCP が呼び出し元から要求された場合、 RFC 1035 のセクション 4.2.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