Функция SHUnicodeToUnicode (shlwapi.h)
[Эта функция доступна в 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, даже если она была усечена. Это гарантирует, что в pwzDst будет скопировано не более символов cwchBuf. Не предпринимается никаких попыток избежать усечения строки в середине суррогатной пары Юникода.
Если буферы pwzSrc и pwzDst перекрываются, поведение функции не определено.
SHUnicodeToTChar определяется как то же, что и SHUnicodeToUnicode.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional, Windows XP [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server, Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | shlwapi.h |
DLL | Shlwapi.dll (версия 5.0 или более поздняя) |
См. также раздел
StringCchLength