Функция DownlevelGetStringScripts

Предоставляет список сценариев, используемых в указанной строке Юникода.

Примечание.

Эта функция используется только приложениями, работающими в операционных системах до Windows Vista. Для его использования требуется пакет скачивания. Приложения, которые работают только в Windows Vista и более поздних версиях, должны вызывать GetStringScripts.

 

Синтаксис

int DownlevelGetStringScripts(
  _In_  DWORD   dwFlags,
  _In_  LPCWSTR lpString,
  _In_  int     cchString,
  _Out_ LPWSTR  lpScripts,
  _In_  int     cchScripts
);

Параметры

dwFlags [in]

Флаги, указывающие параметры извлечения скрипта.

Значение Значение
GSS_ALLOW_INHERITED_COMMON
Извлеките сведения о скрипте "Qaii" (УНАСЛЕДОВАННЫЙ) и "Zyyy" (COMMON). Это значение не влияет на обработку неназначенных символов. Эти символы во входной строке всегда вызывают появление скрипта Zzzz (UNASSIGNED) в строке скрипта.

 

Примечание.

По умолчанию эта функция игнорирует все унаследованные или общие символы в входной строке Юникода. Если GSS_ALLOW_INHERITED_COMMON не задано, ни Qaii, ни "Zyyy" не будут отображаться в строке скрипта, даже если входная строка содержит такие символы. Если GSS_ALLOW_INHERITED_COMMON задано, и если входная строка содержит унаследованные и(или) общие символы, в строке скрипта появится "Qaii" и/или "Zyyy". См. раздел «Примечания».

 

lpString [in]

Указатель на строку Юникода для анализа.

cchString [in]

Размер в символах строки Юникода, указанной lpString. Приложение задает этому параметру значение -1, если строка завершается значением NULL. Если приложение задает этому параметру значение 0, функция извлекает строку Юникода null (L"\0") в lpScripts и возвращает 1.

lpScripts [out]

Указатель на буфер, в котором эта функция извлекает строку, завершающую значение NULL, представляющую список скриптов, используя нотацию 4 символов, используемую в ISO 15924. Каждое имя скрипта состоит из четырех латинских символов, а имена извлекаются в алфавитном порядке. За каждым именем, включая последнее, следует точка с запятой.

Кроме того, этот параметр может содержать значение NULL , если для cchScripts задано значение 0. В этом случае функция возвращает требуемый размер буфера скрипта.

cchScripts [in]

Размер в символах для буфера скрипта, указанного lpScripts.

Кроме того, приложение может задать для этого параметра значение 0. В этом случае функция извлекает значение NULL в lpScripts и возвращает необходимый размер буфера скрипта.

Возвращаемое значение

Возвращает количество символов, полученных в выходном буфере, включая завершающийся пустой символ, если для успешного выполнения и cchScripts задано ненулевое значение. Функция возвращает 1, чтобы указать, что скрипт не найден, например, если входная строка содержит только общие или унаследованные символы, а GSS_ALLOW_INHERITED_COMMON не задано. Учитывая, что каждый найденный скрипт добавляет пять символов (четыре символа + разделитель), простая математическая операция предоставляет число скриптов как (return_code - 1) / 5.

Если функция завершается успешно и значение cchScripts равно 0, возвращаемое значение является обязательным размером в символах, включая завершающий символ NULL, для буфера скрипта. Число скриптов, как описано выше.

Функция возвращает значение 0, если она не выполнена. Чтобы получить расширенные сведения об ошибке, приложение может вызвать GetLastError, который может возвращать один из следующих кодов ошибок:

  • ERROR_BADDB. Функция не могла получить доступ к данным. Эта ситуация обычно не должна возникать и обычно указывает на плохую установку, проблему диска или подобные.
  • ERROR_INSUFFICIENT_BUFFER. Предоставленный размер буфера был недостаточно велик или неправильно задан значение NULL.
  • ERROR_INVALID_FLAGS. Значения, предоставленные для флагов, недопустимы.
  • ERROR_INVALID_PARAMETER. Любое из значений параметров было недопустимым.

Замечания

Эта функция полезна в рамках стратегии устранения проблем безопасности, связанных с международными доменными именами (IDN).

Определение скрипта основано на значениях скриптов, опубликованных консорциумом https://www.unicode.org/Public/4.1.0/ucd/Scripts.txtЮникода, за исключением того, что неназначенные символы имеют значение "Zzzz" (UNASSIGNED) вместо "Zyyy" (COMMON).

Ниже приведены некоторые примеры поведения этой функции:

Входная строка

dwFlags

lpScripts

Сценарии

Microsoft.com

0

Латн;

Латинская

Microsoft.com

GSS_ALLOW_INHERITED_COMMON

Латн; Zyyy;

Латиница +Common

${ROWSPAN2}$Ni ño${REMOVE}$

004E 0069 0241 006F

${ROWSPAN2}$GSS_ALLOW_INHERITED_COMMON${REMOVE}$

${ROWSPAN2}$Latn;${REMOVE}$

${ROWSPAN2}$Latin${REMOVE}$

Использует ЛАТИНИЦУ SMALL LETTER N WITH TILDE

${ROWSPAN2}$Ni ño${REMOVE}$

004E 0069 006E 0303 006F

${ROWSPAN2}$GSS_ALLOW_INHERITED_COMMON${REMOVE}$

${ROWSPAN2}$Latn; Qaii;${REMOVE}$

${ROWSPAN2}$Latin + Унаследованный${REMOVE}$

Использует CO МБ INING TILDE

${ROWSPAN2}$Sp оf${REMOVE}$

0053 0070 043e 043e 0066

${ROWSPAN2}$0${REMOVE}$

${ROWSPAN2}$Latn; Cyrl;${REMOVE}$

${ROWSPAN2}$Latin + кириллица${REMOVE}$

Использует CYRILLIC SMALL LETTER O

U+f000

0

Zzzz;

Не назначенные

U+f000

GSS_ALLOW_INHERITED_COMMON

Zzzz;

Не назначенные

 

Требуемый файл заголовка и DLL входят в скачивание API устранения рисков с помощью Microsoft Internationalized Domain Name (IDN) (API устранения рисков) из archive.org.

Requirements

Требование Значение
Минимальная версия клиента
Windows XP [только классические приложения]
Минимальная версия сервера
Windows Server 2003 [только классические приложения]
Распространяемые компоненты
API устранения рисков в Windows XP (SP2 или более поздней версии), Windows Server 2003 (SP1 или более поздней версии), Windows Server 2003 (SP1 или более поздней версии) или Windows Vista
Верхний колонтитул
Idndl.h
DLL-библиотеки
Idndl.dll

См. также

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

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

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

DownlevelGetLocaleScripts

DownlevelVerifyScripts

GetStringScripts