共用方式為


PathCchCombineEx 函式 (pathcch.h)

將兩個路徑片段合併成單一路徑。 此函式也會正式化任何相對路徑專案,移除 “.” 和 “..” 元素,以簡化最終路徑。

此函式與 PathCchCombine 不同,因為它允許建構較長的最終路徑。

此函式與 PathAllocCombine 不同,因為呼叫端必須宣告儲存在堆疊上的傳回字串大小。

此函式與 PathCombine 不同,因為它接受具有 “\”、“\?” 和 “\?\UNC” 前置詞的路徑。

注意 此函式 PathCchCombinePathAllocCombine 應該用來取代 PathCombine ,以避免發生緩衝區溢出的可能性。

語法

WINPATHCCHAPI HRESULT PathCchCombineEx(
  [out]          PWSTR  pszPathOut,
  [in]           size_t cchPathOut,
  [in, optional] PCWSTR pszPathIn,
  [in, optional] PCWSTR pszMore,
  [in]           ULONG  dwFlags
);

參數

[out] pszPathOut

緩衝區的指標,當此函式成功傳回時,會收到合併的路徑字串。 此參數可以指向 與 pszPathInpszMore 相同的緩衝區。

[in] cchPathOut

pszPathOut 所指向的緩衝區大小,以字元為單位。

[in, optional] pszPathIn

第一個路徑字串的指標。 此值可以是 NULL

[in, optional] pszMore

第二個路徑字串的指標。 如果此路徑以單一反斜杠開頭,則只會結合 pszPathIn 指向之路徑的根目錄。 如果此路徑為完整路徑,則會直接複製到輸出緩衝區,而不會與其他路徑結合。 此值可以是 NULL

[in] dwFlags

下列一或多個旗標:

意義
PATHCCH_NONE
0x0000000
不允許建構 \\?\ 路徑 (亦即,長路徑) 超過 MAX_PATH
PATHCCH_ALLOW_LONG_PATHS
0x00000001
允許建構超過 MAX_PATH的 \\?\ 路徑。 請注意 ,cchPathOut 必須大於 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 版開始提供。

傳回值

此函式會傳回 HRESULT 程式代碼,包括下列專案。

傳回碼 描述
S_OK
此函數已成功。 請注意,這也包含空白延伸模組的大小寫,例如句號,其後沒有字元。 在此情況下,原始字串會傳回未變更。
E_INVALIDARG
此值可能是由數件事所造成,例如 將 pszPathOut 參數設定為 NULL,或 將 cchPathOut 值設定為 0 或大於 PATHCCH_MAX_CCH 的值。
E_OUTOFMEMORY
函式無法配置足夠的記憶體來執行作業。
PATHCCH_E_FILENAME_TOO_LONG
原始路徑的大小超過 PATHCCH_MAX_CCH

備註

如果 pszPathInpszMore 都是 NULL 或指向空字串,則會將單一反斜杠複製到 pszPathOut 指向的緩衝區。

規格需求

需求
最低支援的用戶端 Windows 8 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2012 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 pathcch.h
程式庫 Pathcch.lib

另請參閱

PathCchCanonicalize

PathCchCanonicalizeEx

PathCchCombine