共用方式為


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 函式會搜尋錯誤,如下所示:

  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_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

另請參閱

DNS_NAME_FORMAT

DNS_RECORD

DnsNameCompare

DnsQuery