SHAnsiToUnicode 函数 (shlwapi.h)
[此函数可通过 Windows XP 和 Windows Server 2003 使用。 在后续版本的 Windows 中,它可能已更改或不可用。]
将字符串从 ANSI 代码页转换为 Unicode 代码页。
语法
int SHAnsiToUnicode(
[in] PCSTR pszSrc,
[out] PWSTR pwszDst,
int cwchBuf
);
参数
[in] pszSrc
类型: PCSTR
指向要转换为 Unicode 的以 null 结尾的 ANSI 字符串的指针。
[out] pwszDst
类型: PWSTR
指向缓冲区的指针,此函数成功返回后,在 ANSI 字符转换为 Unicode (WCHAR) 后接收 pszSrc 指定的字符串。 缓冲区必须足够大,才能包含 cwchBuf 参数指定的 Unicode 字符数,包括终止 null 字符。
cwchBuf
类型: int
pwszDst 指向的缓冲区可以包含的 Unicode 字符数。 此参数必须大于零。
返回值
类型: int
返回写入 pwszDst 的 Unicode 字符数,包括终止 null 字符。 如果失败,则返回 0。
注解
安全警告: 错误使用此函数可能会危及应用程序的安全性。 例如,如果 pwszDst 缓冲区的大小不足以包含 cwchBuf 指定的字符数,则可能会发生缓冲区溢出。 如果发生访问冲突,缓冲区溢出可能会导致对应用程序的拒绝服务攻击。 在最坏的情况下,缓冲区溢出可能允许攻击者将可执行代码注入进程,尤其是在 pwszDst 是基于堆栈的缓冲区时。 复制整个字符串时,请注意 sizeof 返回字节数,这不是 用于 cwchBuf 参数的正确值。 请改用 sizeof (pwszDst) /sizeof (WCHAR) 。 请注意,此方法假定 pwszDst 是数组,而不是指针。
如果 pwszDst 缓冲区的大小不足以包含整个转换后的输出字符串,则字符串将被截断以适应缓冲区。 无法检测返回字符串已被截断。 字符串始终以 null 结尾,即使已截断。 这可确保将不超过 cwchBuf 字符复制到 pwszDst。 不会尝试避免截断 Unicode 代理项对中间的字符串。
如果 pszSrc 和 pwszDst 缓冲区重叠,则函数的行为未定义。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 专业版、Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server、Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | shlwapi.h |
DLL | Shlwapi.dll (5.0 或更高版本) |
另请参阅
StringCchLength