PathCchCanonicalizeEx 函式 (pathcch.h)
藉由移除 「.」 和 「.」 等導覽元素來產生直接、格式正確的路徑,以簡化路徑。
此函式與 PathCchCanonicalize 不同,因為它允許建構較長的最終路徑。
此函式與 PathAllocCanonicalize 不同,表示呼叫端必須宣告傳回字串的大小,儲存在堆疊上。
此函式與 PathCanonicalize 不同,因為它接受具有 “\”、“\?” 和 “\?\UNC” 前置詞的路徑。
語法
WINPATHCCHAPI HRESULT PathCchCanonicalizeEx(
[out] PWSTR pszPathOut,
[in] size_t cchPathOut,
[in] PCWSTR pszPathIn,
[in] ULONG dwFlags
);
參數
[out] pszPathOut
緩衝區的指標,當此函式成功傳回時,會收到編輯的路徑字串。
[in] cchPathOut
pszPathOut 所指向的緩衝區大小,以字元為單位。
[in] pszPathIn
原始路徑字串的指標。 如果此值為 NULL、指向空字串,或在移除 “.” 和 “..” 元素之後產生空字串,則會將單一反斜杠複製到 pszPathOut 所指向的緩衝區。
[in] dwFlags
下列一或多個旗標:
傳回值
如果此函式成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 程式代碼,包括但不限於下列程式代碼。
傳回碼 | Description |
---|---|
|
cchPathOut 值大於 PATHCCH_MAX_CCH。 |
|
路徑區段具有超過 PATHCCH_MAX_CCH 個字元,或者,如果未設定 PATHCCH_ALLOW_LONG_PATHS 旗標,就會超過標準路徑區段長度限制 256 個字元。 |
|
函式無法配置必要大小的緩衝區。 |
備註
此函式會響應路徑中內嵌的字串 “.” 和 “..”。 “..” 字串表示要移除緊接在路徑區段前面的 。 “.” 字串表示要略過下一個路徑區段。 請注意,無法移除路徑的根區段。 如果 “..” 字串比路徑區段還多,則函式會傳回 S_OK , 而 pszPathOut 所指向的緩衝區包含單一反斜杠 “\”。
除了前面加上 「通配符之外,所有尾端句點都會從路徑中移除。在此情況下,會在 '' 字元之後保留單一句號,但會移除所有其他尾端句點。
如果產生的路徑是根磁碟驅動器 (“x:”) ,則會附加反斜杠 (“x:\”) 。
此函式不會將正斜線 (/) 轉換成反斜線 (\) 。 使用不受信任的輸入時,此函式本身無法用來將路徑轉換成窗體,而該窗體可以與其他子路徑或身分識別的路徑進行比較。 需要該功能的呼叫端應該在使用此函式之前,先將正斜線轉換成反斜線。
下列範例顯示這些字串的效果。
原始字串 | 標準字串 |
---|---|
C:\name_1\.\name_2\..\name_3 | C:\name_1\name_3 |
C:\name_1\..\name_2\.\name_3 | C:\name_2\name_3 |
C:\name_1\name_2\.\name_3\..\name_4 | C:\name_1\name_2\name_4 |
C:\name_1\.\name_2\.\name_3\.。\name_4\.. | C:\name_1\name_2 |
C:\name_1\*... | C:\name_1\*。 |
C:\。。 | C:\ |
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 8 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2012 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | pathcch.h |
程式庫 | Pathcch.lib |