DnsValidateName 巨集 (windns.h)
DnsValidateName 函式會驗證指定 DNS 名稱的狀態。 和許多 DNS 函式一樣,DnsValidateName 函式類型是以多個形式實作,以促進不同的字元編碼。 根據所涉及的字元編碼方式,使用下列其中一個函式:
- DnsValidateName_A (ANSI 編碼_A)
- DnsValidateName_W (Unicode 編碼_W)
- DnsValidateName_UTF8 (UTF-8 編碼的_UTF8)
語法
void DnsValidateName(
p,
f
);
參數
p
待定
f
待定
傳回值
沒有
言論
若要確認電腦主機的狀態(單一卷標),請使用 FormatDnsNameHostnameLabelDnsValidateName 函式類型。
DnsValidateName 函式在判斷指定 DNS 名稱是否存在錯誤時,會依進度運作,並在找到第一個錯誤時傳回。 因此,具有多個、不同錯誤的 DNS 名稱可能會回報為發生第一個錯誤,而且可以更正並重新提交,而只會找到第二個錯誤。
DnsValidateName 函式會搜尋錯誤,如下所示:
- 如果 DNS 名稱為,則傳回 ERROR_INVALID_NAME:
- 超過255個八位。
- 包含超過 63 個八位的標籤。
- 包含兩個或多個連續點。
- 以點 (.) 開頭。
- 如果名稱是以 Format 設定為 DnsNameDomainLabel 或 DnsNameHostnameLabel 來提交名稱,則包含點 (.)。
- 接下來,如果完整 DNS 名稱只包含數值字元 (0-9) 或 DNS 名稱的第一個標籤只包含數值字元 (0-9),除非 Format 設為 DnsNameDomainLabel 或 DnsNameDomain,否則 DnsValidateName 會傳回 DNS_ERROR_NUMERIC_NAME。
- 然後,如果 DNS 名稱,DnsValidateName 會傳回DNS_ERROR_NON_RFC_NAME:
- 包含至少一個擴充字元或 Unicode 字元。注意 Windows 8 或更新版本:如果已啟用國際功能變數名稱 (IDN) 編碼,DnsValidateName_W 不會傳回錯誤。
- 包含底線 (_),除非底線是標籤的第一個字元,否則名稱中會提交 Format 設定為 DnsNameSrvRecord。
- 接下來,如果 DNS 名稱,DnsValidateName 會傳回 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 |