verifyScripts 函式 (winnls.h)
比較兩個列舉的腳本清單。
語法
BOOL VerifyScripts(
[in] DWORD dwFlags,
[in] LPCWSTR lpLocaleScripts,
[in] int cchLocaleScripts,
[in] LPCWSTR lpTestScripts,
[in] int cchTestScripts
);
參數
[in] dwFlags
指定文稿驗證選項的旗標。
值 | 意義 |
---|---|
|
允許 「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 |