SHAnsiToAnsi 函数 (shlwapi.h)

[此函数可通过 Windows XP 和 Windows Server 2003 使用。 在后续版本的 Windows 中,它可能已更改或不可用。]

复制 ANSI 字符串。

语法

int SHAnsiToAnsi(
  [in]  PCSTR pszSrc,
  [out] PSTR  pszDst,
        int   cchBuf
);

参数

[in] pszSrc

类型: LPCSTR

指向要转换为 Unicode 的以 null 结尾的 ANSI 字符串的指针。

[out] pszDst

类型: LPWSTR

指向缓冲区的指针,当此函数成功返回时,该缓冲区接收从 pszSrc 复制的字符。 缓冲区必须足够大,才能包含 cchBuf 参数指定的字符数,包括终止 null 字符的一个空间。

cchBuf

类型: int

pszDst 指向的缓冲区可以包含的字符数。 此参数必须大于零。

返回值

类型: int

返回写入 pszDst 的字符数,包括终止 null 字符。 如果失败,则返回 0。

注解

安全警告: 错误使用此函数可能会危及应用程序的安全性。 例如,如果 pszDst 缓冲区的大小不足以包含 cchBuf 指定的字符数,则可能发生缓冲区溢出。 如果发生访问冲突,缓冲区溢出可能会导致对应用程序的拒绝服务攻击。 在最坏的情况下,缓冲区溢出可能允许攻击者将可执行代码注入进程,尤其是在 pszDst 是基于堆栈的缓冲区时。 请注意,如果缓冲区不够大,输出字符串将被无提示截断。 这可能会导致规范化或其他安全漏洞。

如果 pszDst 缓冲区的大小不足以包含整个转换后的输出字符串,则字符串将被截断以适应缓冲区。 无法检测返回字符串已被截断。 字符串将始终以 null 结尾,即使它已被截断。 此函数注意不要截断 DBCS 字符对的前导字节和尾随字节。 在这种情况下,仅返回 cchBuf-1 字符。

如果 pszSrcpszDst 缓冲区重叠,则函数的行为未定义。

注意 不要假定 函数未更改输出缓冲区中字符串的终止 null 字符后的任何字符。 字符串终止 null 字符之后的输出缓冲区的内容未定义,最多包括缓冲区中的最后一个字符。
 

要求

要求
最低受支持的客户端 Windows 2000 专业版、Windows XP [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server、Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 shlwapi.h
DLL Shlwapi.dll (5.0 或更高版本)

另请参阅

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

StringCbLength

StringCchCopy

StringCchCopyEx

StringCchCopyN

StringCchCopyNEx

StringCchLength