Metode IWbemClassObject::P ut (wbemcli.h)
Metode IWbemClassObject::P ut menetapkan properti bernama ke nilai baru. Metode ini selalu menimpa nilai saat ini dengan yang baru. Ketika IWbemClassObject menunjuk ke definisi kelas CIM, Put membuat atau memperbarui nilai properti. Saat IWbemClassObject menunjuk ke instans CIM, Letakkan pembaruan nilai properti saja. Put tidak dapat membuat nilai properti.
Pengguna tidak dapat membuat properti dengan nama yang dimulai atau diakhir dengan garis bawah (_). Ini disediakan untuk kelas dan properti sistem.
Sintaks
HRESULT Put(
[in] LPCWSTR wszName,
[in] long lFlags,
[in] VARIANT *pVal,
[in] CIMTYPE Type
);
Parameter
[in] wszName
Parameter yang harus menunjuk ke nama properti yang valid. Parameter ini tidak boleh NULL.
[in] lFlags
Dicadangkan. Parameter ini harus 0 (nol).
[in] pVal
Parameter yang harus menunjuk ke VARIAN yang valid, yang menjadi nilai properti baru. Jika pValNULL atau menunjuk ke VARIAN jenis VT_NULL, properti diatur ke NULL, yaitu, tidak ada nilai.
[in] Type
Jenis VARIAN yang ditujukkan oleh pVal.
Nilai NULL untuk properti yang ditunjuk oleh VARIAN jenis VT_NULL dibedakan dari properti jenis VT_I4 dengan nilai 0 (nol).
Saat membuat properti baru, jika pValadalah NULL atau menunjuk ke VT_NULL, jenis properti ditentukan dari parameter vtType .
Jika pVal berisi IWbemClassObject yang disematkan, pemanggil harus memanggil IWbemClassObject::QueryInterface untuk IID_IUnknown dan menempatkan penunjuk yang dihasilkan di VARIAN menggunakan jenis VT_UNKNOWN. Objek sematkan asli disalin selama operasi Put , sehingga tidak dapat dimodifikasi oleh operasi.
Penunjuk diperlakukan sebagai baca-saja. Pemanggil harus memanggil VariantClear setelah panggilan ini selesai.
Gunakan parameter ini hanya saat membuat properti baru dalam definisi kelas CIM dan pVal adalah NULL atau menunjuk ke VARIAN jenis VT_NULL. Dalam kasus seperti itu, parameter vtType menentukan jenis CIM properti. Dalam setiap kasus lainnya, vtType harus 0 (nol). Selain itu, vtType harus 0 (nol) ketika objek yang mendasar adalah instans (bahkan jika pValNULL), karena jenis properti diperbaiki dan tidak dapat diubah. Dengan kata lain, gunakan vtType jika, dan hanya jika, pValadalah NULL atau menunjuk ke VARIAN VT_NULL, dan objek yang mendasarinya adalah kelas CIM.
Saat menggunakan IWbemClassObject::P ut untuk menetapkan nilai array kosong ke properti, Anda tidak perlu menentukan jenis VT yang tepat; Anda dapat menetapkan nilai ke pVal yang merupakan VARIAN dengan jenis varian VT_ARRAY|VT_VARIANT.
Nilai kembali
Metode ini mengembalikan HRESULT yang menunjukkan status panggilan metode. Daftar berikut mencantumkan nilai yang terkandung dalam HRESULT. Untuk nilai HRESULT umum, lihat Kode Kesalahan Sistem.
Keterangan
Jika properti yang ditetapkan oleh metode IWbemClassObject::P ut ada di kelas induk, nilai default properti diubah kecuali jenis properti tidak cocok dengan jenis kelas induk. Jika properti tidak ada dan bukan ketidakcocokan jenis, maka properti dibuat.
Saat menjalankan metode ini pada instans, penimpaan selalu terjadi, karena properti selalu ada.
Saat membuat kelas baru dan jenis properti yang mendasarinya adalah referensi objek, string tanggal/waktu, atau jenis khusus lainnya, Anda mungkin perlu memodifikasi parameter jenis CIM untuk properti guna menunjukkan kelas baru khusus. Kualifikasi CIMType pada properti instans bersifat baca-saja dan diwarisi dari objek kelas.
Jika jenis varian yang ditentukan dalam pVal tidak cocok dengan jenis CIM properti, WMI mencoba mengubah varian ke jenis varian yang sesuai, menggunakan aturan koersi varian normal. Jika varian tidak dapat dipaksa, WBEM_E_TYPE_MISMATCH dikembalikan. Daftar berikut ini mencantumkan pengecualian untuk aturan pemaksaan varian normal saat properti adalah jenis uint32.
Meneruskan jenis varian | Hasil |
---|---|
VT_I4 | S_OK |
VT_I2 | WBEM_TYPE_MISMATCH |
VT_R8 |
S_OK
Namun, meneruskan VT_ARRAY|VT_R8 ke properti jenis uint32[] akan gagal. |
Properti sistem __CLASS hanya dapat ditulis selama pembuatan kelas, ketika mungkin tidak dibiarkan kosong. Semua properti sistem lainnya hanya bersifat baca-saja.
Contoh
Contoh kode berikut menunjukkan cara mengatur nama kelas untuk kelas CIM baru.
// pObj is an empty object from IWbemServices::GetObject
// Set up the property value.
VARIANT v;
VariantInit(&v);
V_VT(&v) = VT_BSTR;
V_BSTR(&v) = SysAllocString(L"MyClass");
// Write it.
LPCWSTR strClassProp = L"__CLASS";
pObj->Put(strClassProp, 0, &v, 0);
// Clean up.
VariantClear(&v);
Contoh kode berikut menunjukkan cara mengatur nilai properti SomeUint64. Ketahuilah bahwa nilai BSTR harus dalam format desimal dan bukan heksadesimal.
// pObj is an instance containing a uint64 property
// Set up the property value.
VARIANT v;
VariantInit(&v);
V_VT(&v) = VT_BSTR;
V_BSTR(&v) = SysAllocString(L"1033"); // - decimal format, not hex
// Write it.
LPCWSTR strClassProp = L"SomeUint64";
pObj->Put(strClassProp, 0, &v, CIM_UINT64);
// Clean up.
VariantClear(&v);
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows Vista |
Server minimum yang didukung | Windows Server 2008 |
Target Platform | Windows |
Header | wbemcli.h (termasuk Wbemidl.h) |
Pustaka | WbemUuid.lib |
DLL | CIMWin32.dll; Esscli.dll; Fastprox.dll; FrameDyn.dll; FrameDynOS.dll; Krnlprov.dll; Ncprov.dll; Wbemcore.dll; Wbemess.dll; Wmipiprt.dll |