共用方式為


SetupGetFileCompressionInfoExA 函式 (setupapi.h)

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

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

若要判斷傳回路徑和檔名的緩衝區大小,您可以呼叫 SetupGetFileCompressionInfoEx,並 ActualSourceFileNameBuffer 指定 NullActualSourceFileNameLen 包含 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 為 NULLActualSourceFileNameLen 必須包含零。

[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 [僅限傳統型應用程式]
目標平臺 窗戶
標頭 setupapi.h
連結庫 Setupapi.lib
DLL Setupapi.dll

另請參閱

函式

概觀

SetupDecompressOrCopyFile