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


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

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

Требования

Требование Значение
Минимальная версия клиента 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