PathCchAppendEx 函数 (pathcch.h)

将一个路径追加到另一个路径的末尾。

此函数不同于 PathCchAppend ,因为它允许构造更长的最终路径。

此函数与 PathAppend 的不同之处在于,它接受带有“\”、“\?”和“\?\UNC”前缀的路径。

注意 应使用此函数 (即 PathCchAppend)来代替 PathAppend ,以防止缓冲区溢出的可能性。

语法

WINPATHCCHAPI HRESULT PathCchAppendEx(
  [in, out]      PWSTR  pszPath,
  [in]           size_t cchPath,
  [in, optional] PCWSTR pszMore,
  [in]           ULONG  dwFlags
);

参数

[in, out] pszPath

指向缓冲区的指针,该缓冲区在输入时包含原始路径。 当此函数成功返回时,缓冲区将包含原始路径和追加的路径。

[in] cchPath

pszPath 指向的缓冲区的大小(以字符为单位)。

[in, optional] pszMore

要追加到 pszPath 指向的路径末尾的路径的指针。 以序列 \?\ 开头的 UNC 路径和路径被接受并识别为完全限定的路径。 这些路径替换 pszPath 指向的字符串,而不是追加到它。

[in] dwFlags

以下一个或多个标志:

含义
PATHCCH_NONE
0x0000000
不允许构造 \\?\ 路径 (即长路径) 长于 MAX_PATH
PATHCCH_ALLOW_LONG_PATHS
0x00000001
允许生成长于 MAX_PATH 的 \\?\ 路径。
PATHCCH_FORCE_ENABLE_LONG_NAME_PROCESS
0x00000002
强制 API 将调用方视为已启用长路径,这与进程的长名称启用状态无关。 仅当指定 了PATHCCH_ALLOW_LONG_PATHS 时才可使用此选项,不能与 PATHCCH_FORCE_DISABLE_LONG_NAME_PROCESS 一起使用。

注意此值从 Windows 10 版本 1703 开始可用。

PATHCCH_FORCE_DISABLE_LONG_NAME_PROCESS
0x00000004
强制 API 将调用方视为已禁用的长路径,与进程的长名称启用状态无关。 仅当指定 PATHCCH_ALLOW_LONG_PATHS 时才可使用此选项,不能与 PATHCCH_FORCE_ENABLE_LONG_NAME_PROCESS 一起使用。

注意此值从 Windows 10 版本 1703 开始可用。

PATHCCH_DO_NOT_NORMALIZE_SEGMENTS
0x00000008
禁用路径段的规范化,包括删除尾随点和空格。 这样就可以访问 win32 路径规范化将阻止的路径。

注意此值从 Windows 10 版本 1703 开始可用。

PATHCCH_ENSURE_IS_EXTENDED_LENGTH_PATH
0x00000010
将输入路径转换为具有 \\?\ 前缀) 的扩展长度 DOS 设备路径窗体 ((如果尚未在该窗体中)。 这样就可以访问由于 Win32 规范化规则 (而无法寻址的路径,这些规则可以去除尾随点和空格) 和路径长度限制。 此选项意味着 PATHCCH_DO_NOT_NORMALIZE_SEGMENTS的行为相同。

注意此值从 Windows 10 版本 1703 开始可用。

返回值

如果此函数成功,则返回 S_OK。 否则,它将返回 HRESULT 代码,包括以下内容。

返回代码 说明
E_INVALIDARG
pszPathpszMoreNULL,cchPath 为 0,或 cchPath 大于 PATHCCH_MAX_CCH
PATHCCH_E_FILENAME_TOO_LONG
生成的字符串将超过 PATHCCH_MAX_CCH
E_OUTOFMEMORY
函数无法分配所需大小的缓冲区。

注解

此函数在两个字符串之间插入反斜杠(如果不存在)。

要求

要求
最低受支持的客户端 Windows 8 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2012 [桌面应用 |UWP 应用]
目标平台 Windows
标头 pathcch.h
Library Pathcch.lib

另请参阅

PathCchAppend