verifyScripts 函式 (winnls.h)

比較兩個列舉的腳本清單。

語法

BOOL VerifyScripts(
  [in] DWORD   dwFlags,
  [in] LPCWSTR lpLocaleScripts,
  [in] int     cchLocaleScripts,
  [in] LPCWSTR lpTestScripts,
  [in] int     cchTestScripts
);

參數

[in] dwFlags

指定文稿驗證選項的旗標。

意義
VS_ALLOW_LATIN
允許 「Latn」 (拉丁文本) 測試清單中,即使它不在地區設定清單中也一樣。

[in] lpLocaleScripts

地區設定清單的指標,指定地區設定的腳本列舉清單。 此清單通常會藉由呼叫 GetLocaleInfoEx ,並將 LCType 設定為 LOCALE_SSCRIPTS來填入。

[in] cchLocaleScripts

大小,以字元為單位,以 lpLocaleScripts 表示的字串。 如果字串為 Null 終止,則應用程式會將此參數設定為 -1。 如果此參數設定為 0,則函式會失敗。

[in] lpTestScripts

測試清單的指標,這是第二個列舉的腳本清單。 此清單通常會藉由呼叫 GetStringScripts 來填入。

[in] cchTestScripts

大小,以字元為單位,以 lpTestScripts 表示的字串。 如果字串為 Null 終止,則應用程式會將此參數設定為 -1。 如果此參數設定為 0,則函式會失敗。

傳回值

如果測試清單不是空的,而且清單中的所有專案也會包含在地區設定清單中,則會傳回 TRUE 。 如果地區設定清單包含的腳本超過測試清單,但所有測試清單腳本都必須包含在地區設定清單中,則此函式仍會傳回 TRUE 。 如果在 dwFlags 中指定VS_ALLOW_LATIN,函式的行為就如同 “Latn;” 一律位於地區設定清單中。

在其他所有情況下,函式會傳回 FALSE。 此傳回可以指出測試清單包含不在地區設定清單中的專案,或者可能表示錯誤。 若要區分這兩種情況,應用程式應該呼叫 GetLastError,這可以傳回下列其中一個錯誤碼:

  • ERROR_INVALID_FLAGS。 為旗標的值無效。
  • ERROR_INVALID_PARAMETER。 任何參數值都無效。
  • ERROR_SUCCESS。 動作已順利完成,但不會產生任何結果。

備註

此函式會比較字串,例如 「Latn;Cyrl;“,由一系列 4 個字元的腳本名稱組成,每個腳本名稱後面接著分號。 它也有特殊案例,說明拉丁腳本通常用於非原生語言和地區設定。

此函式在策略中很有用,可降低 與國際化域名相關的安全性問題, (IDN)

以下是此函式的傳回範例,以及各種案例中 GetLastError 的後續呼叫。 最後兩個範例分別說明測試清單缺少終止分號 (格式錯誤的字元串) ,以及測試清單是空的案例。

地區設定字串 測試字串 dwFlags 傳回值 GetLastError 傳
哈尼族;Hira;假名; 哈尼族; * TRUE (未變更)
哈尼族;Hira;假名; 哈尼族;Latn; 0 FALSE ERROR_SUCCESS
哈尼族;Hira;假名; 哈尼族;Latn; VS_ALLOW_LATIN TRUE (未變更)
哈尼族;Hira;假名; Cyrl; * FALSE ERROR_SUCCESS
哈尼族; 哈尼族;Hira;假名; * false ERROR_SUCCESS
哈尼族;Hira;假名; Cyrl * FALSE ERROR_INVALID_PARAMETER
哈尼族;Hira;假名; * TRUE (未變更)
 
  • 不論VS_ALLOW_LATIN是在 dwFlags 參數中傳遞,還是未提供旗標,結果都相同。

範例

NLS:國際化功能變數名稱 (IDN) 風險降低範例 示範如何使用此函式。

規格需求

需求
最低支援的用戶端 Windows Vista [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2008 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 winnls.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

DownlevelVerifyScripts

GetLocaleInfoEx

GetStringScripts

處理國際化域名 (IDN)

國家語言支援

國家語言支援函式