DnsQuery_A函数 (windns.h)

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

  • DnsQuery_A(用于 ANSI 编码)
  • DnsQuery_W(用于 Unicode 编码)
  • DnsQuery_UTF8 (对于 UTF-8 编码)
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

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

[in] Options

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

[in, out, optional] pExtra

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

[out, optional] ppQueryResults

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

[out, optional] pReserved

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

返回值

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

言论

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

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

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

如果将 lpstrName 参数设置为 NULL,则 DnsQuery 函数将失败,并出现错误 INVALID_PARAMETER

要求

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

另请参阅

DNS_RECORD

DnsQueryEx

DnsRecordListFree