共用方式為


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
PCS_REPLACEDCHAR
已取代一或多個無效字元。
PCS_REMOVEDCHAR
已移除一或多個無效字元。
PCS_TRUNCATED
傳回的路徑會被截斷。
PCS_PATHTOOLONG
函式失敗,因為 pszDir 指定的輸入路徑太長,無法允許 來自 pszSpec 的有效檔名。 傳回此旗標時,一律會伴隨PCS_FATAL旗標。
PCS_FATAL
清除的路徑不是有效的檔名。 這個旗標一律會與PCS_PATHTOOLONG一起傳回。

備註

以下是所有名稱中的無效字元。

\ / : * ? " < > |

控制字元也會被視為無效。 如果不支援長檔名,則分號 (;) 和逗號 (,) 字元也無效。

系統會檢查 pszDir 中名為 的磁碟驅動器,以判斷其文件系統是否支援長檔名。 如果沒有, pszSpec 的名稱會截斷為 8.3 格式,並傳回PCS_TRUNCATED值。 如果 pszDirNULL,則會使用安裝 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 版或更新版本)