Metode IWbemServices::P utClassAsync (wbemcli.h)

Metode IWbemServices::P utClassAsync membuat kelas baru, atau memperbarui yang sudah ada. Kelas yang ditentukan oleh parameter pObject harus diinisialisasi dengan benar dengan semua nilai properti yang diperlukan. Panggilan segera kembali. Keberhasilan atau kegagalan diberikan ke sink objek yang ditentukan oleh parameter pResponseHandler .

Sintaks

HRESULT PutClassAsync(
  [in] IWbemClassObject *pObject,
  [in] long             lFlags,
  [in] IWbemContext     *pCtx,
  [in] IWbemObjectSink  *pResponseHandler
);

Parameter

[in] pObject

Arahkan ke objek yang berisi definisi kelas.

[in] lFlags

Satu atau beberapa nilai berikut ini valid.

WBEM_FLAG_USE_AMENDED_QUALIFIERS

Jika bendera ini diatur, WMI tidak menyimpan kualifikasi apa pun dengan rasa yang diubah . Jika bendera ini tidak diatur, diasumsikan bahwa objek ini tidak dilokalkan, dan semua kualifikasi disimpan dengan instans ini.

WBEM_FLAG_CREATE_OR_UPDATE

Bendera ini menyebabkan kelas ini dibuat jika belum ada atau ditimpa jika sudah ada.

WBEM_FLAG_UPDATE_ONLY

Updates kelas yang ada.

WBEM_FLAG_CREATE_ONLY

Bendera ini hanya untuk pembuatan kelas. Panggilan gagal jika kelas sudah ada.

WBEM_FLAG_SEND_STATUS

Bendera ini mendaftar dengan Manajemen Windows permintaan untuk menerima laporan status perantara melalui implementasi klien IWbemObjectSink::SetStatus. Implementasi penyedia harus mendukung pelaporan status menengah agar bendera ini mengubah perilaku.

WBEM_FLAG_OWNER_UPDATE

Penyedia push harus menentukan bendera ini saat memanggil PutClassAsync untuk menunjukkan bahwa kelas ini telah berubah.

WBEM_FLAG_UPDATE_COMPATIBLE

Bendera ini memungkinkan kelas diperbarui jika tidak ada kelas turunan dan tidak ada instans untuk kelas tersebut. Ini juga memungkinkan pembaruan dalam semua kasus jika perubahan hanya untuk kualifikasi yang tidak penting (misalnya, kualifikasi Deskripsi ). Ini adalah perilaku default untuk panggilan ini dan digunakan untuk kompatibilitas dengan versi Manajemen Windows sebelumnya. Jika kelas memiliki instans atau perubahan untuk pengkualifikasi penting, maka pembaruan akan gagal.

WBEM_FLAG_UPDATE_SAFE_MODE

Bendera ini memungkinkan pembaruan kelas bahkan jika ada kelas anak, selama perubahan tidak menyebabkan konflik dengan kelas anak. Contoh pembaruan bendera ini akan memungkinkan untuk menambahkan properti baru ke kelas dasar yang sebelumnya tidak disebutkan di salah satu kelas anak. Jika kelas memiliki instans, maka pembaruan akan gagal.

WBEM_FLAG_UPDATE_FORCE_MODE

Bendera ini memaksa pembaruan kelas saat ada kelas anak yang bertentangan. Contoh pembaruan bendera ini akan memaksa adalah jika kualifikasi kelas didefinisikan dalam kelas anak, dan kelas dasar mencoba menambahkan kualifikasi yang sama yang bertentangan dengan yang ada. Dalam mode paksa, konflik ini akan diselesaikan dengan menghapus kualifikasi yang bertentangan di kelas anak.

[in] pCtx

Biasanya NULL. Jika tidak, ini adalah penunjuk ke objek IWbemContext yang dapat digunakan oleh penyedia yang menerima kelas yang diminta. Nilai dalam objek konteks harus ditentukan dalam dokumentasi untuk penyedia yang dimaksud. Untuk informasi selengkapnya tentang parameter ini, lihat Melakukan Panggilan ke WMI.

[in] pResponseHandler

Arahkan ke implementasi penelepon IWbemObjectSink. Handler ini menerima status permintaan Put ketika status tersedia menggunakan metode SetStatus . Jika ada kode kesalahan yang dikembalikan, maka penunjuk IWbemObjectSink yang disediakan tidak digunakan. Jika WBEM_S_NO_ERROR dikembalikan, implementasi IWbemObjectSink pengguna dipanggil untuk menunjukkan hasil operasi. Manajemen Windows hanya memanggil AddRef ke penunjuk jika WBEM_S_NO_ERROR kembali. Dalam kasus di mana kode kesalahan kembali, jumlah referensi sama dengan pada entri. Untuk penjelasan terperinci tentang parameter ini, lihat Memanggil Metode.

Nilai kembali

Metode ini mengembalikan HRESULT yang menunjukkan status panggilan metode. Daftar berikut mencantumkan nilai yang terkandung dalam HRESULT.

Status atau kode kesalahan lainnya dilaporkan ke sink objek yang ditentukan oleh parameter pReponseHandler .

Kode kesalahan khusus COM juga dapat dikembalikan jika masalah jaringan menyebabkan Anda kehilangan koneksi jarak jauh ke Manajemen Windows.

Perhatikan bahwa jika PutInstanceAsync mengembalikan WBEM_S_NO_ERROR, WMI menunggu hasil dari metode SetStatus penangan respons. WMI menunggu tanpa batas waktu pada koneksi lokal atau sampai waktu koneksi jarak jauh habis.

Karena mengembalikan WBEM_E_FAILED menyebabkan penyedia lain tidak memiliki kesempatan untuk membuat kelas, itu hanya boleh dikembalikan ketika penyedia kelas telah gagal dengan cara yang mungkin kemudian berhasil.

Catatan Perilaku yang tidak dapat diprediksi akan dihasilkan jika Anda mengubah definisi kelas saat digunakan oleh klien atau penyedia. Metode IWbemServices::P utClass hanya boleh digunakan untuk membuat atau memperbarui kelas ketika tidak ada klien atau penyedia yang saat ini menggunakan kelas .
 

Keterangan

Jika beberapa penyedia kelas diinstal untuk satu kelas tertentu, WMI tidak akan mengenali penyedia kelas mana yang mampu membuat kelas tersebut.

Metode IWbemObjectSink::SetStatus dipanggil untuk menunjukkan akhir kumpulan hasil. Ini juga dapat dipanggil tanpa intervensi panggilan ke IWbemObjectSink::Menunjukkan apakah kondisi kesalahan terjadi.

Karena panggilan balik mungkin tidak dikembalikan pada tingkat autentikasi yang sama dengan yang dibutuhkan klien, disarankan agar Anda menggunakan semisinkron alih-alih komunikasi asinkron. Jika Anda memerlukan komunikasi asinkron, lihat Memanggil Metode.

Untuk informasi selengkapnya tentang menggunakan metode secara semisinkron, lihat IWbemServices::P utClass dan Memanggil Metode.

Contoh

Contoh kode berikut menjelaskan implementasi sederhana PutClassAsync.

HRESULT CStdProvider::PutClassAsync( 
            /* [in] */ IWbemClassObject __RPC_FAR *pObject,
            /* [in] */ long lFlags,
            /* [in] */ IWbemContext __RPC_FAR *pCtx,
            /* [in] */ IWbemObjectSink __RPC_FAR *pResponseHandler
            )
{
    // You must implement the ClassIsValid function yourself to
    // determine if the class contains a valid instance
   if (ClassIsValid(lFlags, pObject))
   {
       return WBEM_S_NO_ERROR;
   }

   return WBEM_E_PROVIDER_NOT_CAPABLE;   
}

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 Fastprox.dll; Esscli.dll; FrameDyn.dll; FrameDynOS.dll; Ntevt.dll; Stdprov.dll; Viewprov.dll; Wbemcomn.dll; Wbemcore.dll; Wbemess.dll; Wbemsvc.dll; Wmipicmp.dll; Wmidcprv.dll; Wmipjobj.dll; Wmiprvsd.dll

Lihat juga

Memanggil Metode

Membuat Kelas

IWbemServices

IWbemServices::P utClass