Fungsi MsiEnumComponentCostsA (msiquery.h)

Fungsi MsiEnumComponentCosts menghitung ruang disk per drive yang diperlukan untuk menginstal komponen. Informasi ini diperlukan untuk menampilkan biaya ruang disk yang diperlukan untuk semua drive di antarmuka pengguna. Biaya ruang disk yang dikembalikan dinyatakan dalam kelipatan 512 byte.

MsiEnumComponentCosts hanya boleh dijalankan setelah penginstal menyelesaikan biaya file dan setelah tindakan CostFinalize. Untuk informasi selengkapnya, lihat Biaya File.

Sintaks

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
);

Parameter

[in] hInstall

Tangani penginstalan yang disediakan untuk tindakan kustom DLL atau diperoleh melalui MsiOpenPackage, MsiOpenPackageEx, atau MsiOpenProduct.

[in] szComponent

String null-terminated yang menentukan nama komponen seperti yang tercantum di kolom Komponen tabel Komponen. Parameter ini dapat berupa null. Jika szComponent null atau string kosong, MsiEnumComponentCosts menghitung total ruang disk per drive yang digunakan selama penginstalan. Dalam hal ini, iState diabaikan. Biaya alat penginstal termasuk biaya tersebut untuk penembolokan database di folder aman serta biaya untuk membuat skrip penginstalan. Perhatikan bahwa total ruang disk yang digunakan selama penginstalan mungkin lebih besar dari ruang yang digunakan setelah komponen diinstal.

[in] dwIndex

Indeks berbasis 0 untuk drive. Parameter ini harus nol untuk panggilan pertama ke fungsi MsiEnumComponentCosts lalu dinaikkan untuk panggilan berikutnya.

[in] iState

Status komponen yang diminta untuk dijumlahkan. Jika szComponent diteruskan sebagai Null atau string kosong, penginstal mengabaikan parameter iState .

[out] szDriveBuf

Buffer yang menyimpan nama drive termasuk terminator null. Ini adalah string kosong jika terjadi kesalahan.

[in, out] pcchDriveBuf

Penunjuk ke variabel yang menentukan ukuran, dalam TCHAR, dari buffer yang ditujukkan oleh parameter lpDriveBuf . Ukuran ini harus mencakup karakter null yang mengakhiri. Jika buffer yang disediakan terlalu kecil, variabel yang diacu oleh pcchDriveBuf berisi jumlah karakter yang tidak termasuk terminator null.

[out] piCost

Biaya komponen per drive yang dinyatakan dalam kelipatan 512 byte. Nilai ini adalah 0 jika terjadi kesalahan. Nilai yang dikembalikan dalam piCost adalah ruang disk akhir yang digunakan oleh komponen setelah penginstalan. Jika szComponent diteruskan sebagai Null atau string kosong, alat penginstal mengatur nilai di piCost ke 0.

[out] piTempCost

Biaya komponen per drive selama durasi penginstalan, atau 0 jika terjadi kesalahan. Nilai dalam *piTempCost mewakili persyaratan ruang sementara selama durasi penginstalan. Persyaratan ruang sementara ini adalah ruang yang diperlukan hanya selama durasi penginstalan. Ini tidak memengaruhi persyaratan ruang disk akhir.

Mengembalikan nilai

Tampilkan Nilai Makna
ERROR_INVALID_HANDLE_STATE
Data konfigurasi rusak.
ERROR_INVALID_PARAMETER
Parameter yang tidak valid diteruskan ke fungsi.
ERROR_NO_MORE_ITEMS
Tidak ada lagi drive untuk kembali.
ERROR_SUCCESS
Nilai dijumlahkan.
ERROR_UNKNOWN_COMPONENT
Komponen hilang.
ERROR_FUNCTION_NOT_CALLED
Biaya tidak lengkap.
ERROR_MORE_DATA
Buffer tidak cukup besar untuk nama drive.
ERROR_INVALID_HANDLE
Handel yang disediakan tidak valid atau tidak aktif.
 
 

Keterangan

Metode yang direkomendasikan untuk menghitung biaya ruang disk per drive adalah sebagai berikut. Mulailah dengan dwIndex diatur ke 0 dan tingkatkan satu per satu setelah setiap panggilan. Lanjutkan enumerasi selama MsiEnumComponentCosts mengembalikan ERROR_SUCCESS.

MsiEnumComponentCosts dapat dipanggil dari tindakan kustom.

Total biaya disk akhir untuk penginstalan adalah jumlah biaya semua komponen ditambah biaya Pemasang Windows (szComponent = null).

Catatan

Header msiquery.h mendefinisikan MsiEnumComponentCosts sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Installer 5.0 di Windows Server 2012, Windows 8, Windows Server 2008 R2 atau Windows 7. Windows Installer 4.0 atau Windows Installer 4.5 di Windows Server 2008 atau Windows Vista. Pemasang Windows pada Windows Server 2003 atau Windows XP
Target Platform Windows
Header msiquery.h
Pustaka Msi.lib
DLL Msi.dll