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


Функция 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, даже если она была усечена. Это гарантирует, что не более чем символы cwchBuf копируются в pwszDst. Попытка не предпринята, чтобы избежать усечения строки в середине суррогатной пары Юникода.

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

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

Требования

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

См. также

MultiByteToWideChar

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

StringCbLength

StringCchCopy

StringCchCopyEx

StringCchCopyN

StringCchCopyNEx

StringCchLength