共用方式為


SetupGetFileCompressionInfoExA 函式 (setupapi.h)

[此函式可用於需求一節中所述的操作系統。 它在後續版本中可能會變更或無法使用。 安裝程式API不應再用於安裝應用程式。 請改用 Windows Installer 來開發應用程式安裝程式。 SetupAPI 會繼續用於安裝設備驅動器。]

SetupGetFileCompressionInfoEx 函式會檢查可能壓縮的檔案,並取得壓縮類型、檔案的完整路徑 (包括檔名) 、壓縮的大小,以及未壓縮的目標檔案大小。 函式的呼叫端會傳入要檢查的檔名,以及緩衝區和緩衝區大小位置的指標,以接收傳回的檔名和路徑。

若要判斷傳回路徑和檔名的緩衝區大小,您可以使用指定 NullActualSourceFileNameLen 的 ActualSourceFileNameLen 呼叫 SetupGetFileCompressionInfoEx 函式成功且傳回時會填入 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 為 NULL,ActualSourceFileNameLen 必須包含零。

[out] RequiredBufferLen

如果此參數不是 NULL,則為檔名和完整路徑的大小,包括終止 NULL。 如果 ActualSourceFileNameBufferNULLActualSourceFileNameLen 為零,則函式會成功,但會填入 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

請參閱

函式

概觀

SetupDecompressOrCopyFile