[PathCleanupSpec 可用於需求章節中指定的作業系統。 它可能會在後續版本中被更改或不可用。
移除檔案或目錄名稱中的非法字元。 對於不支援長檔名的硬碟,強制使用 8.3 檔名格式。
語法
int PathCleanupSpec(
[in, optional] PCWSTR pszDir,
[in, out] PWSTR pszSpec
);
參數
[in, optional] pszDir
類型: PCWSTR
指向一個空終端緩衝區的指標,該緩衝區包含將包含 pszSpec 的檔案或目錄的完整限定路徑。 路徑長度不得超過 MAX_PATH 個字元,包括終止的空字元。 這條路沒有被改變。
這個值可以 NULL。
[in, out] pszSpec
類型: PWSTR
指向一個包含要清理檔案或目錄名稱的空終端緩衝區的指標。 對於檔案,請包含該檔案的副檔名。 請注意,因為「\」被視為無效字元且會被移除,因此此緩衝區不能包含超過一個目錄深度的路徑。
退出時,緩衝區包含一個包含清理後名稱的 null 終止字串。
此緩衝區長度應至少為MAX_PATH字元,以避免緩衝區超載。
返回值
類型:int
回傳以下一個或多個值。
| 傳回碼 | Description |
|---|---|
|
替換了一個或多個無效字元。 |
|
移除一個或多個無效字元。 |
|
回傳路徑會被截斷。 |
|
函式失敗是因為 pszDir 指定的輸入路徑過長,無法從 pszSpec 建立有效檔名。 當這面旗幟被歸還時,總是會附上PCS_FATAL旗。 |
|
被清理的路徑不是有效的檔名。 這面旗幟總是會與PCS_PATHTOOLONG一併歸還。 |
Remarks
以下字元在所有名稱中均被視為無效字元。
\ / : * ? " < > |
控制字元也被視為無效。 若不支援長檔名,分號(;) 和逗號(,)字元也無效。
檢查 pszDir 中命名的磁碟機,以判斷其檔案系統是否支援長檔名。 若不符合, pszSpec 的名稱會被截斷為 8.3 格式,並返回 PCS_TRUNCATED 值。 若 pszDir 為 NULL,則使用 Windows 安裝的磁碟機來判斷長檔名的支援。
若完整路徑—— pszDir 路徑中的字元數加上 pszSpec 清理後名稱中的字元數——超過 MAX_PATH – 1(以考慮終止的空字元),函式回傳 PCS_PATHTOOLONG。
要求
| Requirement | Value |
|---|---|
| 最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
| 支援的最低伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
| 目標平臺 | Windows 作業系統 |
| 標頭 | shlobj_core.h(包括 Shlobj.h) |
| Library | Shell32.lib |
| DLL | Shell32.dll(版本 5.0 或更新版本) |