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 函数在确定是否存在具有给定 DNS 名称的错误时进展,并在发现第一个错误时返回。 因此,具有多个、不同错误的 DNS 名称可能会报告为出现第一个错误,并且可以更正并重新提交,然后才能找到第二个错误。
DnsValidateName 函数搜索错误,如下所示:
- 如果 DNS 名称为,则返回 ERROR_INVALID_NAME:
- 大于 255 个八进制数。
- 包含超过 63 个八进制值的标签。
- 包含两个或多个连续点。
- 以点(.)开头。
- 如果 Format 设置为 DnsNameDomainLabel 或 DnsNameHostnameLabel 提交名称,则包含一个点(.)。
- 接下来,DnsValidateName 返回 DNS_ERROR_NUMERIC_NAME 如果完整的 DNS 名称仅包含数字字符(0-9),或者 DNS 名称的第一个标签仅包含数字字符(0-9),除非 格式 设置为 DnsNameDomainLabel 或 DnsNameDomain。
- 然后,DnsValidateName 如果 DNS 名称返回DNS_ERROR_NON_RFC_NAME:
- 包含至少一个扩展字符或 Unicode 字符。注意 Windows 8 或更高版本:如果启用了国际域名(IDN)编码,DnsValidateName_W 不会返回错误。
- 包含下划线(_),除非下划线是标签中的第一个字符,在名称中提交 Format 设置为 DnsNameSrvRecord。
- 接下来,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 |