SetupGetFileCompressionInfoExW 函式 (setupapi.h)
[此函式可用於需求一節中所述的作業系統。 它在後續版本中可能會變更或無法使用。 安裝程式API 不應再用於安裝應用程式。 請改用 Windows Installer 來開發應用程式安裝程式。 SetupAPI 會繼續用於安裝設備磁碟機。]
SetupGetFileCompressionInfoEx函式會檢查可能壓縮的檔案,並取得壓縮類型、檔案的完整路徑 (包括檔案名) 、壓縮的大小,以及未壓縮的目標檔案大小。 函式的呼叫端會傳入要檢查的檔案名,以及緩衝區和緩衝區大小位置的指標,以接收傳回的檔案名和路徑。
若要判斷傳回路徑和檔案名的緩衝區大小,您可以使用指定Null和ActualSourceFileNameLen 的 ActualSourceFileNameLen呼叫SetupGetFileCompressionInfoEx。 函式成功且傳回時會填入 RequiredBufferLen。
語法
WINSETUPAPI BOOL SetupGetFileCompressionInfoExW(
[in] PCWSTR SourceFileName,
[in, out] PWSTR ActualSourceFileNameBuffer,
[in, out] DWORD ActualSourceFileNameBufferLen,
[out] PDWORD RequiredBufferLen,
[out] PDWORD SourceFileSize,
[out] PDWORD TargetFileSize,
[out] PUINT CompressionType
);
參數
[in] SourceFileName
要檢查之可能壓縮檔案的檔案名。 如果來源媒體上找不到檔案,安裝程式最多會搜尋兩個替代名稱。 例如;如果安裝程式找不到 F:\x86\cmd.exe,則會搜尋 F:\mpis\cmd.ex_,如果找不到該名稱,則會搜尋 F:\x86\cmd.ex$。
[in, out] ActualSourceFileNameBuffer
如果此參數不是 Null,則會接收實際檔案名和路徑的緩衝區指標。 只有在函式傳回NO_ERROR時,這才有效。
[in, out] ActualSourceFileNameBufferLen
ActualSourceFileNameBuffer所指定的緩衝區大小,以字元為單位。 您通常會使用緩衝區大小MAX_PATH。 如果 ActualSourceFileNameLen 太小,函式會因為ERROR_INSUFFICIENT_BUFFER而失敗。 如果ActualSourceFileNameBuffer為Null,ActualSourceFileNameLen必須包含零。
[out] RequiredBufferLen
如果此參數不是 Null,則為檔案名和完整路徑的大小,包括終止 Null。 如果 ActualSourceFileNameBuffer 為 Null 且 ActualSourceFileNameLen 為零,則函式會成功,但會填入 RequiredBufferLen。 只有當函式傳回NO_ERROR或ERROR_INSUFFICIENT_BUFFER時,這個參數才有效。
[out] SourceFileSize
此函式以目前形式傳回檔案大小的變數指標,這是 ActualSourceFileNameBuffer所命名之檔案的目前大小。 大小取決於檢查來源檔案;它不會從 INF 檔案擷取。 只有在函式傳回NO_ERROR或ERROR_INSUFFICIENT_BUFFER時,原始程式檔大小才有效。
[out] TargetFileSize
變數的指標,此函式會傳回檔案在解壓縮或複製時會佔用的大小。 如果未壓縮檔案,這個值會與 SourceFileSize相同。 大小取決於檢查檔案;它不會從 INF 檔案擷取。 只有當函式傳回NO_ERROR或ERROR_INSUFFICIENT_BUFFER時,目標檔案大小才有效。
[out] CompressionType
變數的指標,此函式會傳回值,指出 ActualSourceFileName上所使用的壓縮類型。 只有在函式傳回NO_ERROR或ERROR_INSUFFICIENT_BUFFER時,壓縮類型才有效。 此參數值可以是下列其中一個旗標。
FILE_COMPRESSION_NONE
來源檔案不會使用辨識的壓縮演算法進行壓縮。
FILE_COMPRESSION_WINLZA
原始程式檔會使用 LZ 壓縮進行壓縮。
FILE_COMPRESSION_MSZIP
原始程式檔會使用 MSZIP 壓縮進行壓縮。
傳回值
如果函式成功,則傳回值為 TRUE (非零) 。
如果函式失敗,傳回值為 FALSE (零) 。 函式也可以傳回下列其中一個 系統錯誤碼。
若要取得擴充的錯誤資訊,請呼叫 GetLastError。
備註
因為 SetupGetFileCompressionInfoEx 會檢查實體檔案來判斷壓縮,所以您的安裝應用程式應該先確定檔案存在,再呼叫 SetupGetFileCompressionInfoEx。
注意
setupapi.h 標頭會根據 UNICODE 預處理器常數的定義,將 SetupGetFileCompressionInfoEx 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程式碼,可能會導致編譯或執行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | setupapi.h |
程式庫 | Setupapi.lib |
Dll | Setupapi.dll |