Функция SHUnicodeToAnsi (shlwapi.h)
[Эта функция доступна в Windows XP и Windows Server 2003. Он может быть изменен или недоступен в последующих версиях Windows.]
Преобразует строку из кодовой страницы Юникода в кодовую страницу ANSI.
Синтаксис
int SHUnicodeToAnsi(
[in] PCWSTR pwszSrc,
[out] PSTR pszDst,
int cchBuf
);
Параметры
[in] pwszSrc
Тип: PCWSTR
Указатель на строку Юникода, завершаемую null, для преобразования в ANSI.
[out] pszDst
Тип: PSTR
Указатель на буфер, который при успешном возвращении этой функции получает преобразованные символы. Буфер должен быть достаточно большим, чтобы содержать количество символов CHAR , заданное параметром cchBuf , включая пространство для завершающего символа NULL.
cchBuf
Тип: int
Количество значений CHAR , которые могут содержаться в буфере, на который указывает pszDst. Значение, присвоенное параметру, должно быть больше нуля.
Возвращаемое значение
Тип: int
Возвращает число значений CHAR , записанных в выходной буфер, включая завершающий символ NULL. В случае неудачи возвращает значение 0.
Комментарии
Предупреждение системы безопасности: Неправильное использование этой функции может поставить под угрозу безопасность приложения. Например, если буфер pszDst недостаточно велик, чтобы содержать количество символов, указанное в cchBuf, может произойти переполнение буфера. Переполнение буфера может привести к атаке типа "отказ в обслуживании" в приложении в случае нарушения доступа. В худшем случае переполнение буфера может позволить злоумышленнику внедрить исполняемый код в процесс, особенно если pszDst является буфером на основе стека. Кроме того, выходная строка усекается автоматически, если она слишком велика для буфера. Это может привести к канонизации или другим уязвимостям системы безопасности.
Если буфер pszDst недостаточно велик, чтобы содержать всю преобразованную выходную строку, строка усекается в соответствии с буфером. Невозможно определить, что возвращаемая строка была усечена. Строка всегда будет заканчиваться null, даже если она была усечена. Эта функция обеспечивает отсутствие усечения между начальными и следовыми байтами пары символов DBCS. В этом случае возвращаются только символы cchBuf-1.
Если буферы pwszSrc и pszDst перекрываются, поведение функции не определено.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional, Windows XP [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server, Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | shlwapi.h |
DLL | Shlwapi.dll (версия 5.0 или более поздняя) |
См. также раздел
StringCchLength