共用方式為


PathAllocCanonicalize 函式 (pathcch.h)

將路徑字串轉換成標準格式。

此函式與 PathCchCanonicalizePathCchCanonicalizeEx 不同,因為它會在堆積上傳回結果。 這表示呼叫端不需要宣告傳回字串的大小,並降低堆疊的使用。

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

注意 此函式 PathCchCanonicalizePathCchCanonicalizeEx 應該用來取代 PathCanonicalize

語法

WINPATHCCHAPI HRESULT PathAllocCanonicalize(
  [in]  PCWSTR pszPathIn,
  [in]  ULONG  dwFlags,
  [out] PWSTR  *ppszPathOut
);

參數

[in] pszPathIn

包含原始字串之緩衝區的指標。 這個值不可以是 NULL

[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 錯誤碼。

備註

這個函式支援下列替代路徑形式:

  • \\?\
  • \\?\\Unc\
  • \\?\Volume{guid}\

此函式不會將 /) (斜線轉換成反斜線 (\) 。 使用不受信任的輸入時,此函式本身無法用來將路徑轉換成可與其他子路徑或身分識別路徑比較的窗體。 需要該功能的呼叫端應該先將正斜線轉換成反斜線,再使用此函式。

規格需求

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