PathCleanupSpec 函数 (shlobj_core.h)

[PathCleanupSpec 可用于“要求”部分中指定的操作系统。 在后续版本中,它可能已更改或不可用。]

从文件或目录名称中删除非法字符。 在不支持长文件名的驱动器上强制使用 8.3 文件名格式。

语法

int PathCleanupSpec(
  [in, optional] PCWSTR pszDir,
  [in, out]      PWSTR  pszSpec
);

参数

[in, optional] pszDir

类型: PCWSTR

指向以 null 结尾的缓冲区的指针,该缓冲区包含将包含 pszSpec 中名为 的文件或目录的目录的完全限定路径。 路径长度不得超过 MAX_PATH 个字符,包括终止 null 字符。 此路径不会更改。

此值可以为 NULL

[in, out] pszSpec

类型: PWSTR

指向以 null 结尾的缓冲区的指针,该缓冲区包含要清理的文件或目录名称。 对于文件,请包含文件的扩展名。 请注意,由于“”被视为无效字符,并且将被删除,因此此缓冲区不能包含多个目录深的路径。

退出时,缓冲区包含一个以 null 结尾的字符串,其中包含已清理的名称。

此缓冲区的长度应至少为MAX_PATH个字符,以避免缓冲区溢出的可能性。

返回值

类型: int

返回以下一个或多个值。

返回代码 说明
PCS_REPLACEDCHAR
替换了一个或多个无效字符。
PCS_REMOVEDCHAR
删除了一个或多个无效字符。
PCS_TRUNCATED
返回的路径将被截断。
PCS_PATHTOOLONG
函数失败,因为在 pszDir 中指定的输入路径太长,无法从 pszSpec 形成有效的文件名。 返回此标志时,始终附带PCS_FATAL标志。
PCS_FATAL
清理的路径不是有效的文件名。 此标志始终与PCS_PATHTOOLONG一起返回。

注解

以下在所有名称中都被视为无效字符。

\ / : * ? " < > |

控制字符也被视为无效。 如果不支持长文件名,则分号 (;) 和逗号 (,) 字符也无效。

检查 pszDir 中名为 的驱动器,以确定其文件系统是否支持长文件名。 否则, pszSpec 中的名称将被截断为 8.3 格式,并返回PCS_TRUNCATED值。 如果 pszDirNULL,则安装 Windows 的驱动器用于确定长文件名支持。

如果完整路径( pszDir 路径中的字符数加上 pszSpec 中已清理名称中的字符数)超过 MAX_PATH – 1 (,则说明终止 null 字符) ,函数将返回PCS_PATHTOOLONG。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 shlobj_core.h (包括 Shlobj.h)
Library Shell32.lib
DLL Shell32.dll (5.0 或更高版本)