DnsQuery_A 函数 (windns.h)

DnsQuery 函数类型是 DNS 命名空间的泛型查询接口,为应用程序开发人员提供 DNS 查询解析接口。 与许多 DNS 函数一样, DnsQuery 函数类型以多种形式实现,以促进不同的字符编码。 根据所涉及的字符编码,使用以下函数之一:

  • ANSI 编码) 的DnsQuery_A (
  • Unicode 编码) DnsQuery_W (
  • UTF-8 编码) 的DnsQuery_UTF8 (
Windows 8:如果应用程序需要对 DNS 命名空间进行异步查询,则应使用 DnsQueryEx 函数。

语法

DNS_STATUS DnsQuery_A(
  [in]                PCSTR       pszName,
  [in]                WORD        wType,
  [in]                DWORD       Options,
  [in, out, optional] PVOID       pExtra,
  [out, optional]     PDNS_RECORD *ppQueryResults,
  [out, optional]     PVOID       *pReserved
);

参数

[in] pszName

指向表示要查询的 DNS 名称的字符串的指针。

[in] wType

一个 值,该值表示查询的“资源记录 (RR) DNS 记录类型 ”。 wType 确定 ppQueryResultsSet 指向的数据的格式。 例如,如果 wType 的值DNS_TYPE_A,则DNS_A_DATA ppQueryResultsSet 指向的数据格式。

[in] Options

一个 值,该值包含要在 DNS 查询中使用的 DNS 查询选项 的位图。 选项可以组合在一起,所有选项都替代 DNS_QUERY_STANDARD

[in, out, optional] pExtra

此参数保留供将来使用,必须设置为 NULL

[out, optional] ppQueryResults

可选。 指向指向构成响应的 RU 列表的指针的指针。 有关详细信息,请参见“备注”部分。

[out, optional] pReserved

此参数保留供将来使用,必须设置为 NULL

返回值

成功完成后返回成功确认。 否则,将返回 Winerror.h 中定义的相应 DNS 特定错误代码。

注解

调用 DnsQuery 函数的应用程序使用完全限定的 DNS 名称和 Resource Record (RR) 类型生成查询,并根据所需的服务类型设置查询选项。 设置 DNS_QUERY_STANDARD 选项后,DNS 使用解析程序缓存,先使用 UDP 进行查询,如果响应被截断,则使用 TCP 重试,并请求服务器代表客户端执行递归解析以解析查询。

应用程序必须使用 DnsRecordListFree 函数释放返回的 RR 集。

注意 调用其中一个 DnsQuery 函数类型时,请注意,DNS 服务器可能会返回多个记录以响应查询。 例如,多宿主计算机将接收同一 IP 地址的多个 A 记录。 调用方必须使用尽可能多的返回记录。
 
请考虑以下情况,其中多个返回的记录需要代表应用程序执行其他活动:对多宿主计算机进行 DnsQuery_A 函数调用,应用程序发现与第一条 A 记录关联的地址未响应。 然后,应用程序应尝试使用 (从DnsQuery_A函数调用返回的附加 ) A 记录中指定的其他 IP 地址。

如果 lpstrName 参数设置为 NULL则 DnsQuery 函数将失败并 显示错误INVALID_PARAMETER

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 windns.h
Library Dnsapi.lib
DLL Dnsapi.dll

另请参阅

DNS_RECORD

DnsQueryEx

DnsRecordListFree