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