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 函数搜索错误,如下所示:
- 如果 DNS 名称为,则返回 ERROR_INVALID_NAME :
- 长于 255 个八位字节。
- 包含一个大于 63 个八位字节的标签。
- 包含两个或多个连续点。
- 以点 (.) 开头。
- 如果提交名称时 格式设置为 DnsNameDomainLabel 或 DnsNameHostnameLabel,则包含一个点 (.) 。
- 接下来,如果完整 DNS 名称仅包含 0-9 ) (数字字符,或者 DNS 名称的第一个标签仅包含 0-9) 的数字 (字符,则 DnsValidateName 返回DNS_ERROR_NUMERIC_NAME,除非 Format 设置为 DnsNameDomainLabel 或 DnsNameDomain。
- 然后,如果 DNS 名称为, 则 DnsValidateName 返回DNS_ERROR_NON_RFC_NAME:
- 至少包含一个扩展或 Unicode 字符。注意 Windows 8 或更高版本:如果启用了国际域名 (IDN) 编码,DnsValidateName_W不会返回错误。
- 包含下划线 (_) ,除非下划线是名称中标签中的第一个字符 ,且格式 设置为 DnsNameSrvRecord。
- 接下来,如果 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 |