MsiEnumComponentCostsA 函式 (msiquery.h)
MsiEnumComponentCosts 函式會列舉安裝元件所需的每個磁碟驅動器的磁碟空間。 需要此資訊,才能顯示使用者介面中所有磁碟驅動器所需的磁碟空間成本。 傳回的磁碟空間成本會以512位元組的倍數表示。
MsiEnumComponentCosts 只有在安裝程式完成檔案成本處理之後,以及 CostFinalize 動作之後,才會執行。 如需詳細資訊,請參閱 檔案成本。
語法
UINT MsiEnumComponentCostsA(
[in] MSIHANDLE hInstall,
[in] LPCSTR szComponent,
[in] DWORD dwIndex,
[in] INSTALLSTATE iState,
[out] LPSTR szDriveBuf,
[in, out] LPDWORD pcchDriveBuf,
[out] LPINT piCost,
[out] LPINT piTempCost
);
參數
[in] hInstall
處理提供給 DLL 自定義動作的安裝,或透過 MsiOpenPackage、MsiOpenPackageEx或 MsiOpenProduct取得的安裝。
[in] szComponent
以 Null 結尾的字串,指定元件的名稱,因為它列在 Component 資料表的 [元件] 資料行中,。 此參數可以是 Null。 如果 szComponent 為 null 或空字串,MsiEnumComponentCosts 列舉安裝期間所使用的每個磁碟驅動器總磁碟空間。 在此情況下,會忽略 iState 。 安裝程式的成本包括那些在安全資料夾中快取資料庫的成本,以及建立安裝腳本的成本。 請注意,安裝期間所使用的磁碟空間總計可能會大於安裝元件之後所使用的空間。
[in] dwIndex
磁碟驅動器以 0 為基礎的索引。 第一次呼叫 msiEnumComponentCosts 函式時,此參數應該是零,然後針對後續呼叫遞增。
[in] iState
要列舉的要求元件狀態。 如果
[out] szDriveBuf
包含 Null 終止符之磁碟驅動器名稱的緩衝區。 發生錯誤時,這是空字串。
[in, out] pcchDriveBuf
變數的指標,這個變數指定 lpDriveBuf 參數所指向之緩衝區的大小。 這個大小應該包含終止的 Null 字元。 如果提供的緩衝區太小,pcchDriveBuf 所指向的變數 會包含不包含 null 終止符的字元計數。
[out] piCost
每個磁碟驅動器的元件成本,以512位元組的倍數表示。 如果發生錯誤,此值為 0。 piCost 中傳回的值是安裝後元件所使用的最終磁碟空間。 如果 szComponent 傳遞為 Null 或空字串,安裝程式會將值設定為 piCost 為 0。
[out] piTempCost
安裝期間,每個磁碟驅動器的元件成本,如果發生錯誤,則為 0。 *piTempCost 中的值代表安裝期間的暫存空間需求。 此暫存空間需求是只有在安裝期間才需要的空間。 這不會影響最終磁碟空間需求。
傳回值
傳回值 | 意義 |
---|---|
|
組態數據已損毀。 |
|
無效的參數已傳遞至函式。 |
|
沒有更多磁碟驅動器可傳回。 |
|
已列舉值。 |
|
元件遺失。 |
|
成本未完成。 |
|
緩衝區不夠大,無法用於磁碟驅動器名稱。 |
|
提供的句柄無效或非使用中。 |
言論
列舉每個磁碟驅動器磁碟空間成本的建議方法如下。 從 dwIndex 設定為 0 開始,並在每次呼叫之後遞增一次。 只要 MsiEnumComponentCosts 傳回ERROR_SUCCESS,請繼續列舉。
您可以從自定義動作呼叫 MsiEnumComponentCosts。
安裝的最終磁碟成本總計是所有元件的成本加 Windows Installer 的成本總和(szComponent = null)。
注意
msiquery.h 標頭會根據 UNICODE 預處理器常數的定義,將 MsiEnumComponentCosts 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows Server 2012、Windows 8、Windows Server 2008 R2 或 Windows 7 上的 Windows Installer 5.0。 Windows Server 2008 或 Windows Vista 上的 Windows Installer 4.0 或 Windows Installer 4.5。 Windows Server 2003 或 Windows XP 上的 Windows Installer |
目標平臺 | 窗戶 |
標頭 | msiquery.h |
連結庫 | Msi.lib |
DLL | Msi.dll |