Mengoptimalkan Penyedia Peristiwa
Penyedia acara dapat mencurikan banyak waktu untuk membuat peristiwa. Jika tidak ada aplikasi klien yang menggunakan peristiwa yang dibuat, maka penyedia membuang-buang sumber daya sistem. Selanjutnya, WMI menghabiskan sejumlah besar penguraian sumber daya dan mengirim kueri kompleks ke penyedia yang sesuai. Untuk menghindari pembororan sumber daya sistem dan untuk meningkatkan performa penyedia acara, Anda dapat menerapkan antarmuka IWbemEventProviderQuerySink . IWbemEventProviderQuerySink memantau kueri yang didaftarkan aplikasi klien dengan WMI dengan menggunakan metode NewQuery dan CancelQuery . Dengan memantau kueri klien terdaftar, penyedia Anda dapat menentukan bagaimana jika ada pesan yang harus dikirim ke WMI.
WMI memanggil NewQuery pada penyedia peristiwa saat konsumen klien mendaftarkan kueri filter peristiwa yang berisi referensi ke peristiwa yang didukung oleh penyedia peristiwa tersebut. Jadi penyedia peristiwa yang bertanggung jawab atas peristiwa modifikasi instans untuk kelas EmailClass dapat disiapkan untuk menghasilkan pemberitahuan hanya untuk pengirim. Ketika penyedia menerima kueri yang meminta pemberitahuan perubahan pada properti subjek , penyedia dapat mulai membuat pemberitahuan tersebut. Dalam skenario ini, WMI tidak diharuskan untuk membuang pemberitahuan yang melaporkan perubahan penerima saja.
Demikian pula, WMI memanggil CancelQuery pada penyedia peristiwa ketika konsumen klien membatalkan pendaftaran kueri filter peristiwa yang berisi referensi ke peristiwa yang didukung oleh penyedia peristiwa. Tujuan CancelQuery adalah bagi penyedia acara untuk memperbarui daftar peristiwa apa yang harus dikirim.
Catatan
Jika penyedia Anda mendukung IWbemEventProvider dan IWbemEventProviderQuerySink, pastikan bahwa implementasi metode IUnknown::QueryInterface mengembalikan pointer ke kedua antarmuka.