Функция 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 |
Верхний колонтитул |
|
DLL-библиотеки |
|
См. также