Поделиться через


Функция 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. Приложение задает этому параметру значение -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

См. также

DownlevelVerifyScripts

GetLocaleInfoEx

GetStringScripts

Обработка международных доменных имен (IDN)

Поддержка национальных языков

Функции поддержки национальных языков