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] 格式。
當判斷是否有具有指定 DNS 名稱的錯誤存在時, DnsValidateName 函式會在判斷錯誤是否存在時運作,並在發現第一個錯誤時傳回 。 因此,具有多個、不同錯誤的 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_ERROR_NON_RFC_NAME 時所提交的名稱,DNS 伺服器會接受提交的名稱,但其他 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 |
程式庫 | Dnsapi.lib |
Dll | Dnsapi.dll |