Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Эта функция доступна через Windows XP и Windows Server 2003. Он может быть изменен или недоступен в последующих версиях Windows.]
Копирует строку Юникода.
Синтаксис
int SHUnicodeToUnicode(
[in] PCWSTR pwzSrc,
[out] PWSTR pwzDst,
int cwchBuf
);
Параметры
[in] pwzSrc
Тип: PCWSTR
Указатель на строку Юникода, завершаемую null, которая будет скопирована в выходной буфер.
[out] pwzDst
Тип: PWSTR
Указатель на выходной буфер для получения скопированных символов. Буфер должен быть достаточно большим, чтобы содержать число символов WCHAR , указанных cwchBuf, включая комнату для завершающегося символа NULL.
cwchBuf
Тип: int
Число символов WCHAR , которые могут содержаться буфером, на который указывает параметр pwzDst . Этот параметр должен быть больше нуля.
Возвращаемое значение
Тип: int
Возвращает число символов WCHAR , записанных в выходной буфер, включая завершающийся символ NULL. Возвращает значение 0, если не удалось.
Замечания
Предупреждение системы безопасности: Использование этой функции неправильно может компрометации безопасности приложения. Например, если буфер pwzDst недостаточно велик, чтобы содержать количество символов, указанных cwchBuf, может произойти перерасход буфера. Переполнение буфера может привести к атаке типа "отказ в обслуживании" в приложении, если возникает нарушение доступа. В худшем случае переполнение буфера может позволить злоумышленнику внедрить исполняемый код в процесс, особенно если pwzDst является буфером на основе стека. При копировании всей строки обратите внимание, что sizeof возвращает количество байтов, которое не является правильным значением для параметра cwchBuf . Вместо этого используйте sizeof(pwzDst)/sizeof(WCHAR). Обратите внимание, что этот метод предполагает, что pwzDst является массивом, а не указателем. Обратите внимание, что функция автоматически усечивает выходную строку, если буфер недостаточно велик. Это может привести к канонизации или другим уязвимостям системы безопасности.
Если буфер pwzDst недостаточно велик, чтобы содержать всю преобразованную выходную строку, строка усечена для соответствия буферу. Невозможно обнаружить, что возвращаемая строка усечена. Строка всегда будет завершаться значением NULL, даже если она была усечена. Это гарантирует, что не более чем символы cwchBuf копируются в pwzDst. Попытка не предпринята, чтобы избежать усечения строки в середине суррогатной пары Юникода.
Если буферы pwzSrc и pwzDst перекрываются, поведение функции не определено.
SHUnicodeToTChar определяется так же, как SHUnicodeToUnicode.
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент | Windows 2000 Профессиональный, Windows XP [только классические приложения] |
| минимальный поддерживаемый сервер | Windows 2000 Server, Windows Server 2003 [только классические приложения] |
| целевая платформа | Виндоус |
| Header | shlwapi.h |
| Library | Shlwapi.lib |
| DLL | Shlwapi.dll (версия 5.0 или более поздняя версия) |
См. также
StringCchLength