Fungsi MsiEnumProductsExA (msi.h)
Fungsi MsiEnumProductsEx menghitung melalui satu atau semua instans produk yang saat ini diiklankan atau diinstal dalam konteks yang ditentukan. Fungsi ini menggantikan MsiEnumProducts.
Sintaks
UINT MsiEnumProductsExA(
[in, optional] LPCSTR szProductCode,
[in] LPCSTR szUserSid,
[in] DWORD dwContext,
[in] DWORD dwIndex,
[out, optional] CHAR [39] szInstalledProductCode,
[out, optional] MSIINSTALLCONTEXT *pdwInstalledContext,
[out, optional] LPSTR szSid,
[in, out, optional] LPDWORD pcchSid
);
Parameter
[in, optional] szProductCode
ProductCode GUID produk yang akan dijumlahkan. Hanya instans produk dalam cakupan konteks yang ditentukan oleh parameter szUserSid dan dwContext yang dijumlahkan. Parameter ini dapat diatur ke NULL untuk menghitung semua produk dalam konteks yang ditentukan.
[in] szUserSid
String yang dihentikan null yang menentukan pengidentifikasi keamanan (SID) yang membatasi konteks enumerasi. String SID khusus s-1-1-0 (Semua Orang) menentukan enumerasi di semua pengguna dalam sistem. Nilai SID selain s-1-1-0 dianggap sebagai user-SID dan membatasi enumerasi untuk pengguna saat ini atau pengguna mana pun dalam sistem. Parameter ini dapat diatur ke NULL untuk membatasi cakupan enumerasi ke pengguna saat ini.
[in] dwContext
Membatasi enumerasi ke konteks. Parameter ini bisa berupa salah satu atau kombinasi nilai yang diperlihatkan dalam tabel berikut.
[in] dwIndex
Menentukan indeks produk yang akan diambil. Parameter ini harus nol untuk panggilan pertama ke fungsi MsiEnumProductsEx lalu dinaikkan untuk panggilan berikutnya. Indeks harus dinaikkan, hanya jika panggilan sebelumnya telah mengembalikan ERROR_SUCCESS. Karena produk tidak dipesan, produk baru apa pun memiliki indeks arbitrer. Ini berarti bahwa fungsi dapat mengembalikan produk dalam urutan apa pun.
[out, optional] szInstalledProductCode
String TCHAR yang dihentikan null yang memberi GUID ProductCode dari instans produk yang sedang dijumlahkan. Parameter ini bisa NULL.
[out, optional] pdwInstalledContext
Mengembalikan konteks instans produk yang sedang dijumlahkan. Nilai output dapat MSIINSTALLCONTEXT_USERMANAGED, MSIINSTALLCONTEXT_USERUNMANAGED, atau MSIINSTALLCONTEXT_MACHINE. Parameter ini bisa NULL.
[out, optional] szSid
Buffer output yang menerima string SID akun tempat instans produk ini berada. Buffer ini mengembalikan string kosong untuk instans yang diinstal dalam konteks per komputer.
Buffer ini harus cukup besar untuk memuat SID. Jika buffer terlalu kecil, fungsi mengembalikan ERROR_MORE_DATA dan mengatur *pcchSid ke jumlah TCHAR di SID, tidak termasuk karakter NULL yang mengakhiri.
Jika szSid diatur ke NULL dan pcchSid diatur ke pointer yang valid, fungsi mengembalikan ERROR_SUCCESS dan mengatur *pcchSid ke jumlah TCHAR dalam nilai, tidak termasuk NULL yang mengakhiri. Fungsi kemudian dapat dipanggil lagi untuk mengambil nilai , dengan buffer szSid cukup besar untuk berisi *pcchSid + 1 karakter.
Jika szSid dan pcchSid diatur ke NULL, fungsi mengembalikan ERROR_SUCCESS jika nilai ada, tanpa mengambil nilai.
[in, out, optional] pcchSid
Saat memanggil fungsi, parameter ini harus menjadi penunjuk ke variabel yang menentukan jumlah TCHAR dalam buffer szSid . Ketika fungsi kembali, parameter ini diatur ke ukuran nilai yang diminta apakah fungsi menyalin nilai ke dalam buffer yang ditentukan atau tidak. Ukuran dikembalikan sebagai jumlah TCHAR dalam nilai yang diminta, tidak termasuk karakter null yang mengakhiri.
Parameter ini dapat diatur ke NULL hanya jika szSid juga NULL, jika tidak, fungsi mengembalikan ERROR_INVALID_PARAMETER.
Nilai kembali
Fungsi MsiEnumProductsEx mengembalikan salah satu nilai berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Jika cakupan menyertakan pengguna selain pengguna saat ini, Anda memerlukan hak istimewa administrator. |
|
Data konfigurasi rusak. |
|
Parameter yang tidak valid diteruskan ke fungsi. |
|
Tidak ada lagi produk untuk dijumlahkan. |
|
Produk dijumlahkan. |
|
Parameter szSid terlalu kecil untuk mendapatkan SID pengguna. |
|
Produk tidak diinstal pada komputer dalam konteks yang ditentukan. |
|
Kegagalan internal yang tidak terduga. |
Keterangan
Untuk menghitung produk, aplikasi awalnya harus memanggil fungsi MsiEnumProductsEx dengan parameter iIndex diatur ke nol. Aplikasi kemudian harus meningkatkan parameter iProductIndex dan memanggil MsiEnumProductsEx sampai mengembalikan ERROR_NO_MORE_ITEMS dan tidak ada lagi produk untuk dijumlahkan.
Saat melakukan beberapa panggilan ke MsiEnumProductsEx untuk menghitung semua produk, setiap panggilan harus dilakukan dari utas yang sama.
Pengguna harus memiliki hak istimewa administrator untuk menghitung produk di semua akun pengguna atau akun pengguna selain akun pengguna saat ini. Enumerasi melompati produk yang hanya diiklankan (seperti produk yang tidak diinstal) dalam konteks per pengguna yang tidak dikelola saat menghitung di semua pengguna atau pengguna selain pengguna saat ini.
Gunakan MsiGetProductInfoEx untuk mendapatkan status atau informasi lain tentang setiap instans produk yang dijumlahkan oleh MsiEnumProductsEx.
Catatan
Header msi.h mendefinisikan MsiEnumProductsEx 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. Windows Installer 3.0 atau yang lebih baru pada Windows Server 2003 atau Windows XP. Lihat Persyaratan Run-Time Penginstal Windows untuk informasi tentang paket layanan Windows minimum yang diperlukan oleh versi Pemasang Windows. |
Target Platform | Windows |
Header | msi.h |
Pustaka | Msi.lib |
DLL | Msi.dll |