PathAllocCombine 函式 (pathcch.h)
將兩個路徑片段串連成單一路徑。 此函式也會規範任何相對路徑專案,取代 “.” 和 “..” 之類的路徑元素。
此函式與 PathCchCombine 和 PathCchCombineEx 不同,因為它會在堆積上傳回結果。 這表示呼叫端不需要宣告傳回字串的大小,並減少堆疊的使用。
此函式與 PathCombine 不同,因為它接受具有 “\”、“\?” 和 “\?\UNC” 前置詞的路徑。
<
語法
WINPATHCCHAPI HRESULT PathAllocCombine(
[in] PCWSTR pszPathIn,
[in] PCWSTR pszMore,
[in] ULONG dwFlags,
[out] PWSTR *ppszPathOut
);
參數
[in] pszPathIn
第一個路徑字串的指標。
[in] pszMore
第二個路徑字串的指標。 如果此路徑以單一反斜杠開頭,它只會結合 pszPathIn 所指向之路徑的根目錄。 如果這個路徑是完整路徑,則會直接複製到輸出緩衝區,而不會與其他路徑結合。
[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 版開始提供。
|
-
PATHCCH_ENSURE_TRAILING_SLASH
- 0x00000020
|
合併或正規化路徑時,請確定有尾端反斜杠。
注意此值從 Windows 10 1703 版開始提供。
|
[out] ppszPathOut
緩衝區的指標位址,當此函式成功傳回時,會收到合併的路徑字串。 呼叫 LocalFree 函式時,呼叫端必須負責釋出此資源。 此值不可為 NULL。
傳回值
如果此函式成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。
雖然 pszPathIn 或 pszMore 可以 NULL,但兩者都不能是 NULL。
這個函式支援下列替代路徑形式:
- \\?\
- \\?\\Unc\
- \\?\Volume{guid}\
規格需求
需求 |
值 |
最低支援的用戶端 |
Windows 8 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 |
Windows Server 2012 [傳統型應用程式 |UWP 應用程式] |
目標平台 |
Windows |
標頭 |
pathcch.h |
程式庫 |
Pathcch.lib |
另請參閱
PathCchCombine
PathCchCombineEx