Bagikan melalui


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

Lihat juga

IUnknown::QueryInterface

IWbemClassObject

Kualifikasi WMI

Kelas Sistem WMI

Properti Sistem WMI