SetupGetFileCompressionInfoExA 函式 (setupapi.h)
[此函式可用於需求一節所指出的作業系統。 後續版本可能會變更或無法使用。 安裝程式API 不應該再用於安裝應用程式。 請改用 Windows Installer 來開發應用程式安裝程式。 SetupAPI 會繼續用於安裝設備驅動器。]
SetupGetFileCompressionInfoEx 函式會檢查可能壓縮的檔案,並取得壓縮類型、檔案的完整路徑(包括檔名)、壓縮大小,以及未壓縮目標檔案的大小。 函式的呼叫端會傳入要檢查的檔名,以及緩衝區大小位置的指標,以接收傳回的檔名和路徑。
若要判斷傳回路徑和檔名的緩衝區大小,您可以呼叫 SetupGetFileCompressionInfoEx,並 ActualSourceFileNameBuffer 指定 Null,ActualSourceFileNameLen 包含 0。 函式會成功,並在傳回時填入 RequiredBufferLen
語法
WINSETUPAPI BOOL SetupGetFileCompressionInfoExA(
[in] PCSTR SourceFileName,
[in, out] PSTR 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
[out] RequiredBufferLen
檔案名和完整路徑的大小,包括終止 NULL,如果此參數不是 NULL。 如果
[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 [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | setupapi.h |
連結庫 | Setupapi.lib |
DLL | Setupapi.dll |