Функция 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. Приложение задает этому параметру значение -1, если строка завершается null. Если для этого параметра задано значение 0, функция завершается ошибкой.
[in] lpTestScripts
Указатель на тестовый список, второй перечисляемый список скриптов. Этот список обычно заполняется вызовом GetStringScripts.
[in] cchTestScripts
Размер (в символах) строки, указанной lpTestScripts. Приложение задает этому параметру значение -1, если строка завершается null. Если для этого параметра задано значение 0, функция завершается ошибкой.
Возвращаемое значение
Возвращает значение TRUE , если тестовый список не пуст и все элементы в списке также включены в список языковых стандартов. Функция по-прежнему возвращает значение TRUE , если список языковых стандартов содержит больше скриптов, чем тестовый список, но все скрипты списка тестов должны содержаться в списке языковых стандартов. Если VS_ALLOW_LATIN указан в dwFlags, функция ведет себя так, как если бы "Latn;" всегда находится в списке языковых стандартов.
Во всех остальных случаях функция возвращает значение FALSE. Это может означать, что тестовый список содержит элемент, который не входит в список языковых стандартов, или может указывать на ошибку. Чтобы различать эти два случая, приложение должно вызвать Метод GetLastError, который может возвращать один из следующих кодов ошибок:
- ERROR_INVALID_FLAGS. Значения, указанные для флагов, были недопустимыми.
- ERROR_INVALID_PARAMETER. Любое из значений параметров было недопустимым.
- ERROR_SUCCESS. Действие успешно завершено, но не дало результатов.
Комментарии
Эта функция сравнивает строки, например "Latn; Cyrl;", состоящий из 4-символьных имен скриптов, с каждым именем скрипта, за которым следует точка с запятой. Он также имеет особый случай, чтобы учесть тот факт, что латинская буква часто используется в языках и языковых стандартах, для которых он не является собственным.
Эта функция полезна в рамках стратегии по устранению проблем безопасности, связанных с международными доменными именами (IDN).
Ниже приведены примеры возврата этой функции и последующего вызова GetLastError в различных сценариях. В последних двух примерах иллюстрируется, соответственно, случай, когда в тестовом списке отсутствует завершающая точка с запятой (неправильно сформированная строка), а тестовый список пуст.
Строка языкового стандарта | Тестовая строка | dwFlags | Возвращаемое значение | Возврат GetLastError |
---|---|---|---|---|
Хани; Hira; Кана; | Хани; | * | TRUE | (без изменений) |
Хани; Hira; Кана; | Хани; Латн; | 0 | FALSE | ERROR_SUCCESS |
Хани; Hira; Кана; | Хани; Латн; | VS_ALLOW_LATIN | TRUE | (без изменений) |
Хани; Hira; Кана; | Cyrl; | * | FALSE | ERROR_SUCCESS |
Хани; | Хани; Hira; Кана; | * | Ложь. | ERROR_SUCCESS |
Хани; Hira; Кана; | Cyrl | * | FALSE | ERROR_INVALID_PARAMETER |
Хани; Hira; Кана; | * | TRUE | (без изменений) |
- Результаты будут одинаковыми независимо от того, передается ли VS_ALLOW_LATIN в параметре dwFlags или флаги не предоставляются.
Примеры
NLS. Пример устранения рисков с международным доменным именем (IDN) демонстрирует использование этой функции.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2008 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | winnls.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |