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.

Jenis SID Makna
NULL
Menentukan pengguna yang saat ini masuk.
Pengidentifikasi keamanan pengguna
Menentukan enumerasi untuk pengguna tertentu dalam sistem. Contoh pengguna SID adalah "S-1-3-64-2415071341-1358098788-3127455600-2561".
s-1-1-0
Menentukan enumerasi di semua pengguna dalam sistem.
 
Catatan String SID khusus s-1-5-18 (Sistem) tidak dapat digunakan untuk menghitung produk atau patch yang dipasang sebagai per mesin. Ketika dwContext diatur ke MSIINSTALLCONTEXT_MACHINE saja, szUserSid harus NULL.
 

[in] dwContext

Membatasi enumerasi ke konteks. Parameter ini bisa berupa salah satu atau kombinasi nilai yang diperlihatkan dalam tabel berikut.

Konteks Makna
MSIINSTALLCONTEXT_USERMANAGED
Enumerasi diperluas ke semua penginstalan yang dikelola per pengguna untuk pengguna yang ditentukan oleh szUserSid. SID tidak valid tidak mengembalikan item.
MSIINSTALLCONTEXT_USERUNMANAGED
Enumerasi diperluas ke semua penginstalan per-pengguna-tidak terkelola untuk pengguna yang ditentukan oleh szUserSid. SID tidak valid tidak mengembalikan item.
MSIINSTALLCONTEXT_MACHINE
Enumerasi diperluas ke semua penginstalan per mesin. Ketika dwInstallContext diatur ke MSIINSTALLCONTEXT_MACHINE saja, parameter szUserSID harus NULL.

[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
ERROR_ACCESS_DENIED
Jika cakupan menyertakan pengguna selain pengguna saat ini, Anda memerlukan hak istimewa administrator.
ERROR_BAD_CONFIGURATION
Data konfigurasi rusak.
ERROR_INVALID_PARAMETER
Parameter yang tidak valid diteruskan ke fungsi.
ERROR_NO_MORE_ITEMS
Tidak ada lagi produk untuk dijumlahkan.
ERROR_SUCCESS
Produk dijumlahkan.
ERROR_MORE_DATA
Parameter szSid terlalu kecil untuk mendapatkan SID pengguna.
ERROR_UNKNOWN_PRODUCT
Produk tidak diinstal pada komputer dalam konteks yang ditentukan.
ERROR_FUNCTION_FAILED
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

Lihat juga

MsiEnumProducts

Tidak Didukung di Windows Installer 2.0 dan yang lebih lama

ProductCode

Menghapus Patch