DnsValidateName_W函数 (windns.h)

DnsValidateName 函数验证指定 DNS 名称的状态。 与许多 DNS 函数一样,DnsValidateName 函数类型以多种形式实现,以促进不同的字符编码。 根据涉及的字符编码,使用以下函数之一:

  • DnsValidateName_A(ANSI 编码_A)
  • DnsValidateName_W (Unicode 编码_W)
  • DnsValidateName_UTF8 (UTF-8 编码_UTF8)

语法

DNS_STATUS DnsValidateName_W(
  [in] PCWSTR          pszName,
  [in] DNS_NAME_FORMAT Format
);

参数

[in] pszName

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

[in] Format

指定要检查的名称的格式的 DNS_NAME_FORMAT 值。

返回值

DnsValidateName 函数具有以下可能的返回值:

言论

若要验证计算机主机(单一标签)的状态,请使用 DnsValidateName 函数类型,DnsNameHostnameLabel Format

DnsValidateName 函数在确定是否存在具有给定 DNS 名称的错误时进展,并在发现第一个错误时返回。 因此,具有多个、不同错误的 DNS 名称可能会报告为出现第一个错误,并且可以更正并重新提交,然后才能找到第二个错误。

DnsValidateName 函数搜索错误,如下所示:

  1. 如果 DNS 名称为,则返回 ERROR_INVALID_NAME
    • 大于 255 个八进制数。
    • 包含超过 63 个八进制值的标签。
    • 包含两个或多个连续点。
    • 以点(.)开头。
    • 如果 Format 设置为 DnsNameDomainLabel 或 DnsNameHostnameLabel 提交名称,则包含一个点(.)。
  2. 接下来,DnsValidateName 返回 DNS_ERROR_NUMERIC_NAME 如果完整的 DNS 名称仅包含数字字符(0-9),或者 DNS 名称的第一个标签仅包含数字字符(0-9),除非 格式 设置为 DnsNameDomainLabel 或 DnsNameDomain。
  3. 然后,DnsValidateName 如果 DNS 名称返回DNS_ERROR_NON_RFC_NAME:
    • 包含至少一个扩展字符或 Unicode 字符。注意 Windows 8 或更高版本:如果启用了国际域名(IDN)编码,DnsValidateName_W 不会返回错误。
    • 包含下划线(_),除非下划线是标签中的第一个字符,在名称中提交 Format 设置为 DnsNameSrvRecord。
  4. 接下来,DnsValidateName 在 DNS 名称时返回 DNS_ERROR_INVALID_NAME_CHAR
    • 包含一个空格。
    • 包含以下任何无效字符:{ | } ~ [ \ ] ^ ' : ;< = >? & @ ! “ # $ % ^ ' ( ) + / ,
    • 包含星号,除非星号是多标签名称中的第一个标签,Format 设置为 DnsNameWildcard
注意 如果 DnsValidateName 返回 DNS_ERROR_NON_RFC_NAME,则应将错误作为警告进行处理,指出并非所有 DNS 服务器都将接受该名称。 收到此错误时,请注意,如果已正确配置,DNS 服务器将接受提交的名称(默认配置接受返回 DNS_ERROR_NON_RFC_NAME 时提交的名称),但其他 DNS 服务器软件可能不会接受。 Windows DNS 服务器处理 NON_RFC_NAMES

如果 DnsValidateName 返回以下任何错误,pszName 应作为无效主机名进行处理:

DNS_ERROR_NUMERIC_NAME
DNS_ERROR_INVALID_NAME_CHAR
ERROR_INVALID_NAME
 

要求

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

另请参阅

DNS_NAME_FORMAT

DNS_RECORD

DnsNameCompare

DnsQuery