共用方式為


SetupGetFileCompressionInfoW 函式 (setupapi.h)

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

SetupGetFileCompressionInfo 函式會檢查實體檔案,以判斷它是否已壓縮並取得其完整路徑、大小和未壓縮目標檔案的大小。

請注意,此函式已經過時,且已由 SetupGetFileCompressionInfoEx取代。 請勿使用 SetupGetFileCompressionInfo,而是一律使用 SetupGetFileCompressionInfoEx

語法

WINSETUPAPI DWORD SetupGetFileCompressionInfoW(
  [in]      PCWSTR SourceFileName,
  [in, out] PWSTR  *ActualSourceFileName,
  [in, out] PDWORD SourceFileSize,
  [in, out] PDWORD TargetFileSize,
  [in, out] PUINT  CompressionType
);

參數

[in] SourceFileName

所需資訊之檔案的檔名。 如果來源媒體上找不到檔案,則檔案會搜尋最多兩個替代的「壓縮格式」名稱。 例如,如果檔案 F:\x86\cmd.exe 且找不到,則會搜尋 F:\mpis\cmd.ex_,如果找不到,則會搜尋 F:\x86\cmd.ex$。 您應該使用以 Null 結尾的字串。

[in, out] ActualSourceFileName

變數的指標,該變數會接收它已找到之檔案的完整路徑。 呼叫者可以使用對 LocalFree 呼叫釋放指標。 只有在函式傳回NO_ERROR時,路徑才有效。 請注意,如果 SetupAPI.dll 的版本小於 5.0.2195,則呼叫端必須使用導出的函式,MyFree 從 SetupAPI 釋放此函式設定的記憶體,而不是使用 LocalFree。 請參閱一節。

[in, out] SourceFileSize

變數的指標,此函式會傳回其目前格式的檔案大小,這是由 actualSourceFileName 所命名之檔案的目前大小。 大小取決於檢查來源檔案;它不會從 INF 檔案擷取。 只有在函式傳回NO_ERROR時,來源檔案大小才有效。

[in, out] TargetFileSize

變數的指標,此函式會傳回檔案在解壓縮或複製時會佔用的大小。 如果未壓縮檔案,這個值會與 SourceFileSize相同。 大小取決於檢查檔案;它不會從 INF 檔案擷取。 只有當函式傳回NO_ERROR時,目標檔案大小才有效。

[in, out] CompressionType

此函式傳回值之變數的指標,指出在 ActualSourceFileName 上所使用的壓縮類型。 只有在函式傳回NO_ERROR時,壓縮類型才有效。 此值可以是下列其中一個旗標。

FILE_COMPRESSION_NONE

來源檔案不會使用可辨識的壓縮演算法進行壓縮。

FILE_COMPRESSION_WINLZA

原始程式檔會使用 LZ 壓縮進行壓縮。

FILE_COMPRESSION_MSZIP

來源檔案會使用 MSZIP 壓縮進行壓縮。

傳回值

函式會傳回 系統錯誤碼,指出檔案搜尋的結果。 錯誤碼可以是下列其中一個值。

若要取得擴充的錯誤資訊,請呼叫 GetLastError

言論

請勿使用 SetupGetFileCompressionInfo,而是一律使用 SetupGetFileCompressionInfoEx

由於 SetupGetFileCompressionInfo 參考實體檔案來決定壓縮,因此您的安裝程式應用程式應該先確定檔案存在,再呼叫 SetupGetFileCompressionInfo

請注意,如果 SetupAPI.dll 的版本小於 5.0.2195,則呼叫端必須使用導出的函式,MyFree 從 SetupAPI 釋放此函式設定的記憶體,而不是使用 LocalFree。 如果呼叫 LocalFree 造成存取違規,您應該使用 MyFree來解決問題。

以下是如何從 SetupAPI.dll取得 MyFree 函式的範例:

typedef VOID (WINAPI* MYFREEFUNC)(LPVOID lpBuff);
   MYFREEFUNC MyFree;

   HMODULE hDll=NULL;
   hDll = GetModuleHandle("SETUPAPI.DLL");
   MyFree = (MYFREEFUNC)GetProcAddress(hDll, "MyFree");
   ...
   other code here to prepare file queue
   ...
   PTSTR lpActualSourceFileName;
   SetupGetFileCompressionInfo(...,&lpActualSourceFileName,...,...,...);
   ...
   MyFree(lpActualSourceFileName); 

注意

setupapi.h 標頭會根據 UNICODE 預處理器常數的定義,將 SetupGetFileCompressionInfo 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

要求 價值
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
支援的最低伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平臺 窗戶
標頭 setupapi.h
連結庫 Setupapi.lib
DLL Setupapi.dll

另請參閱

函式

概觀

SetupDecompressOrCopyFile