DnsQueryEx 関数 (windns.h)

DnsQueryEx 関数は、DNS 名前空間への非同期ジェネリック クエリ インターフェイスです。 これは、アプリケーション開発者に DNS クエリ解決インターフェイスを提供します。

DnsQuery と同様に、DnsQueryEx を使用して DNS 名前空間に対して同期クエリを実行することもできます。

構文

DNS_STATUS DnsQueryEx(
  [in]                PDNS_QUERY_REQUEST pQueryRequest,
  [in, out]           PDNS_QUERY_RESULT  pQueryResults,
  [in, out, optional] PDNS_QUERY_CANCEL  pCancelHandle
);

パラメーター

[in] pQueryRequest

クエリ要求情報を含む DNS_QUERY_REQUEST または DNS_QUERY_REQUEST3 構造体へのポインター。

メモこの構造体の pQueryCompleteCallback メンバーからDNS_QUERY_COMPLETION_ROUTINEコールバックを省略すると、DnsQueryEx が同期的に呼び出されます。
 

[in, out] pQueryResults

クエリの結果を含む DNS_QUERY_RESULT 構造体へのポインター。 入力時に、pQueryResultsバージョン メンバーをDNS_QUERY_RESULTS_VERSION1し、他のすべてのメンバーを NULL にする必要があります。 出力時に、残りのメンバーはクエリの完了の一部として入力されます。

メモ 非同期クエリの場合、DNS_QUERY_COMPLETION_ROUTINE コールバックが呼び出されるまで、アプリケーションはこの構造体 解放しないでください。 クエリが完了すると、DNS_QUERY_RESULT構造体には、DnsRecordListFree を使用して解放する必要があるDNS_RECORDSの一覧へのポインターが含まれます。
 

[in, out, optional] pCancelHandle

保留中の非同期クエリを取り消すために使用できる DNS_QUERY_CANCEL 構造体へのポインター。

メモ アプリケーションは、DNS_QUERY_COMPLETION_ROUTINE コールバックが呼び出されるまで、この構造体 解放しないでください。
 

戻り値

DnsQueryEx 関数には、次の戻り値が含まれます。

リターン コード 説明
ERROR_SUCCESS
呼び出しに成功しました。
ERROR_INVALID_PARAMETER
pQueryRequest パラメーターまたは pQueryRequest パラメーターが初期化されていないか、間違ったバージョンが含まれています。
DNS RCODE
呼び出しの結果、 RCODE エラーが発生しました。
DNS_INFO_NO_RECORDS
応答にレコードがありません。
DNS_REQUEST_PENDING
クエリは非同期的に完了します。

注釈

DnsQueryEx の呼び出しが同期的に完了した場合 (つまり、関数の戻り値がDNS_REQUEST_PENDINGされていない場合)、pQueryResults の pQueryRecords メンバーにはDNS_RECORDSのリストへのポインターが含まれており、DnsQueryEx はエラーまたは成功を返します。

次の条件では、 DnsQueryEx への同期呼び出しが呼び出され、DNS コールバックは使用されません。

  • DNS_QUERY_COMPLETION_ROUTINE コールバックは、pQueryRequestpQueryCompleteCallback メンバーから省略されます。
  • クエリは、ローカル コンピューター名と A 型または AAAA 型のリソース レコード (RR) を対象とします。
  • DnsQueryEx の呼び出しは、IPv4 または IPv6 アドレスに対してクエリを実行します。
  • DnsQueryEx の呼び出しでエラーが返されます。
DnsQueryEx の呼び出しが非同期的に完了すると、クエリの結果は pQueryRequestDNS_QUERY_COMPLETION_ROUTINE コールバックによって返され、pQueryResultsQueryStatus メンバーにはDNS_REQUEST_PENDINGが含まれており、DnsQueryExDNS_REQUEST_PENDINGを返します。 アプリケーションは、DNS コールバックが成功するまで DnsQueryEx に渡される pQueryResults 構造体を追跡する必要があります。 アプリケーションは、DnsQueryEx によって返される pCancelHandle ハンドルを使用して非同期クエリを取り消すことができます。

DnsQueryEx と pQueryContext への非同期呼び出しから返される pCancelHandle は、DNS_QUERY_COMPLETION_ROUTINE DNS コールバックが呼び出されるまで有効です。

メモアプリケーションは、同じプロセス コンテキスト内でDNS_QUERY_COMPLETION_ROUTINEコールバックを介して非同期 DnsQueryEx 完了の通知を受け取ります。
 

要件

要件
サポートされている最小のクライアント Windows 8 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2012 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー windns.h
Library Dnsapi.lib
[DLL] Dnsapi.dll

こちらもご覧ください