DnsValidateName_UTF8 函数 (windns.h)

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

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

语法

DNS_STATUS DnsValidateName_UTF8(
  [in] PCSTR           pszName,
  [in] DNS_NAME_FORMAT Format
);

参数

[in] pszName

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

[in] Format

一个DNS_NAME_FORMAT值,该值指定要检查的名称的格式。

返回值

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

注解

若要验证计算机主机 (单标签) 的状态,请将 DnsValidateName 函数类型与格式中的 DnsNameHostnameLabel 配合使用。

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

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

  1. 如果 DNS 名称为,则返回 ERROR_INVALID_NAME
    • 长于 255 个八位字节。
    • 包含一个大于 63 个八位字节的标签。
    • 包含两个或多个连续点。
    • 以点 (.) 开头。
    • 如果提交名称时 格式设置为 DnsNameDomainLabel 或 DnsNameHostnameLabel,则包含一个点 (.) 。
  2. 接下来,如果完整 DNS 名称仅包含 0-9 ) (数字字符,或者 DNS 名称的第一个标签仅包含 0-9) 的数字 (字符,则 DnsValidateName 返回DNS_ERROR_NUMERIC_NAME,除非 Format 设置为 DnsNameDomainLabel 或 DnsNameDomain。
  3. 然后,如果 DNS 名称为, 则 DnsValidateName 返回DNS_ERROR_NON_RFC_NAME:
    • 至少包含一个扩展或 Unicode 字符。注意 Windows 8 或更高版本:如果启用了国际域名 (IDN) 编码,DnsValidateName_W不会返回错误。
    • 包含下划线 (_) ,除非下划线是名称中标签中的第一个字符 ,且格式 设置为 DnsNameSrvRecord。
  4. 接下来,如果 DNS 名称为, 则 DnsValidateName 返回 DNS_ERROR_INVALID_NAME_CHAR
    • 包含一个空格。
    • 包含以下任何无效字符: { | } ~ [ \ ] ^ ' : ; < = > ? & @ ! " # $ % ^ ` ( ) + / ,
    • 包含星号 (*) ,除非星号是多标签名称中的第一个标签,以 格式 设置为 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 [仅限桌面应用]
目标平台 Windows
标头 windns.h
Library Dnsapi.lib
DLL Dnsapi.dll

另请参阅

DNS_NAME_FORMAT

DNS_RECORD

DnsNameCompare

DnsQuery