Функция SHAnsiToUnicode (shlwapi.h)

[Эта функция доступна в Windows XP и Windows Server 2003. Он может быть изменен или недоступен в последующих версиях Windows.]

Преобразует строку из кодовой страницы ANSI в кодовую страницу Юникода.

Синтаксис

int SHAnsiToUnicode(
  [in]  PCSTR pszSrc,
  [out] PWSTR pwszDst,
        int   cwchBuf
);

Параметры

[in] pszSrc

Тип: PCSTR

Указатель на строку ANSI, завершаемую null, которая должна быть преобразована в Юникод.

[out] pwszDst

Тип: PWSTR

Указатель на буфер, который при успешном возврате этой функции получает строку, указанную в pszSrc, после преобразования символов ANSI в Юникод (WCHAR). Буфер должен быть достаточно большим, чтобы содержать количество символов Юникода, указанное параметром cwchBuf , включая завершающий символ NULL.

cwchBuf

Тип: int

Количество символов Юникода, которые могут содержаться в буфере, на который указывает pwszDst. Этот параметр должен быть больше нуля.

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

Тип: int

Возвращает число символов Юникода, записанных в pwszDst, включая завершающий символ NULL. Возвращает 0 в случае неудачного результата.

Комментарии

Предупреждение системы безопасности: Неправильное использование этой функции может поставить под угрозу безопасность приложения. Например, если буфер pwszDst недостаточно велик, чтобы содержать количество символов, указанное в cwchBuf, может произойти переполнение буфера. Переполнение буфера может привести к атаке типа "отказ в обслуживании" на приложение в случае нарушения доступа. В худшем случае переполнение буфера может позволить злоумышленнику внедрить исполняемый код в процесс, особенно если pwszDst — это буфер на основе стека. При копировании всей строки обратите внимание, что sizeof возвращает количество байтов, которое не является правильным значением для параметра cwchBuf . Вместо этого используйте sizeof(pwszDst)/sizeof(WCHAR). Обратите внимание, что этот метод предполагает, что pwszDst является массивом, а не указателем.

Если буфер pwszDst недостаточно велик, чтобы содержать всю преобразованную выходную строку, строка усекается в соответствии с буфером. Невозможно определить, что возвращаемая строка была усечена. Строка всегда заканчивается null, даже если она была усечена. Это гарантирует, что в pwszDst будет скопировано не более символов cwchBuf. Не предпринимается никаких попыток избежать усечения строки в середине суррогатной пары Юникода.

Если буферы pszSrc и pwszDst перекрываются, поведение функции не определено.

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

Требования

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

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

MultiByteToWideChar

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

StringCbLength

StringCchCopy

StringCchCopyEx

StringCchCopyN

StringCchCopyNEx

StringCchLength