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


Функция 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 перекрываются, поведение функции не определено.

Примечание Не предполагайте, что функция не изменяла символы в выходном буфере, которые следуют за завершающим символом NULL строки. Содержимое выходного буфера после завершающего символа NULL строки не определено, вплоть до последнего символа в буфере.
 
SHTCharToUnicode определяется как то же, что и SHUnicodeToUnicode.

SHUnicodeToTChar определяется как то же, что и SHUnicodeToUnicode.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional, Windows XP [только классические приложения]
Минимальная версия сервера Windows 2000 Server, Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header shlwapi.h
DLL Shlwapi.dll (версия 5.0 или более поздняя)

См. также раздел

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

StringCbLength

StringCchCopy

StringCchCopyEx

StringCchCopyN

StringCchCopyNEx

StringCchLength