PathCleanupSpec 函式 (shlobj_core.h)
[PathCleanupSpec 可用於需求一節中指定的操作系統。 後續版本可能會變更或無法使用。]
從檔案或目錄名稱中移除不合法的字元。 在不支援長檔名的磁碟驅動器上強制執行 8.3 檔名格式。
語法
int PathCleanupSpec(
[in, optional] PCWSTR pszDir,
[in, out] PWSTR pszSpec
);
參數
[in, optional] pszDir
類型: PCWSTR
Null 終止緩衝區的指標,其中包含將包含 pszSpec 上名為 之檔案或目錄之目錄的完整路徑。 路徑長度不能超過MAX_PATH個字元,包括終止的 Null 字元。 此路徑不會改變。
此值可以是 NULL。
[in, out] pszSpec
類型: PWSTR
Null 終止緩衝區的指標,其中包含要清除的檔案或目錄名稱。 如果是檔案,請包含檔案的擴展名。 請注意,由於 '' 被視為無效的字元,因此將移除此緩衝區不能包含一個以上的目錄深度路徑。
結束時,緩衝區會包含包含已清除名稱的 Null 終止字串。
此緩衝區長度至少應MAX_PATH個字元,以避免緩衝區滿溢的可能性。
傳回值
類型: int
傳回下列一或多個值。
傳回碼 | Description |
---|---|
|
已取代一或多個無效字元。 |
|
已移除一或多個無效字元。 |
|
傳回的路徑會被截斷。 |
|
函式失敗,因為 pszDir 指定的輸入路徑太長,無法允許 來自 pszSpec 的有效檔名。 傳回此旗標時,一律會伴隨PCS_FATAL旗標。 |
|
清除的路徑不是有效的檔名。 這個旗標一律會與PCS_PATHTOOLONG一起傳回。 |
備註
以下是所有名稱中的無效字元。
\ / : * ? " < > |
控制字元也會被視為無效。 如果不支援長檔名,則分號 (;) 和逗號 (,) 字元也無效。
系統會檢查 pszDir 中名為 的磁碟驅動器,以判斷其文件系統是否支援長檔名。 如果沒有, pszSpec 的名稱會截斷為 8.3 格式,並傳回PCS_TRUNCATED值。 如果 pszDir 為 NULL,則會使用安裝 Windows 的磁碟驅動器來判斷長檔名支援。
如果完整路徑 — pszDir 路徑中的字元數加上 pszSpec 清理名稱中的字元數,超過 MAX_PATH – 1 (,以考慮終止 null 字元) ,函式會傳回PCS_PATHTOOLONG。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | shlobj_core.h (包含 Shlobj.h) |
程式庫 | Shell32.lib |
Dll | Shell32.dll (5.0 版或更新版本) |