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 |