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_REQUESTDNS_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
pQueryRequestpQueryRequest 参数未初始化或包含错误的版本。
DNS RCODE
调用导致 RCODE 错误。
DNS_INFO_NO_RECORDS
响应中没有记录。
DNS_REQUEST_PENDING
查询将以异步方式完成。

言论

如果对 DnsQueryEx 的调用 同步完成(即函数返回值未 DNS_REQUEST_PENDING),则 pQueryRecordspQueryResults 包含指向 DNS_RECORDS 列表的指针,DnsQueryEx 将返回错误或成功。

以下条件调用同步调用 DnsQueryEx,并且不使用 DNS 回调:

  • DNS_QUERY_COMPLETION_ROUTINE 回调从 pQueryCompleteCallbackpQueryRequest成员中省略。
  • 查询用于本地计算机名称和 AAAAA 类型资源记录(RR)。
  • DnsQueryEx 的调用 查询 IPv4 或 IPv6 地址。
  • DnsQueryEx 的调用 返回错误。
如果对 DnsQueryEx 的调用异步完成,则查询结果由 pQueryRequest中的 DNS_QUERY_COMPLETION_ROUTINE 回调返回,queryStatuspQueryResults 包含 DNS_REQUEST_PENDINGDnsQueryEx 返回 DNS_REQUEST_PENDING。 应用程序应跟踪 传递到 dnsQueryExpQueryResults 结构,直到 DNS 回调成功。 应用程序可以使用 DnsQueryEx返回的 pCancelHandle 句柄取消异步查询。

pCancelHandle 从异步调用 DnsQueryEx 返回,pQueryContext 在调用 DNS_QUERY_COMPLETION_ROUTINE DNS 回调之前有效。

注意, 应用程序通过同一进程上下文中的 DNS_QUERY_COMPLETION_ROUTINE 回调收到异步 DnsQueryEx 完成的通知。
 

要求

要求 价值
最低支持的客户端 Windows 8 [仅限桌面应用]
支持的最低服务器 Windows Server 2012 [仅限桌面应用]
目标平台 窗户
标头 windns.h
Dnsapi.lib
DLL Dnsapi.dll

另请参阅