Bagikan melalui


Menulis Penyedia Acara

Penyedia peristiwa adalah objek COM yang memasok WMI dengan pemberitahuan peristiwa intrinsik dan ekstrinsik. Peristiwa intrinsik melaporkan perubahan data internal ke WMI, sementara peristiwa ekstrinsik melaporkan peristiwa yang ditentukan pengguna yang tidak dijelaskan oleh peristiwa intrinsik. Misalnya, peristiwa sebagai respons terhadap perubahan, pembuatan, atau penghapusan kelas Win32_LogicalDisk akan diklasifikasikan sebagai peristiwa intrinsik. Peristiwa yang dihasilkan berdasarkan sesuatu selain modifikasi, pembuatan, atau penghapusan objek WMI yang ada adalah peristiwa ekstrinsik. Terlepas dari kelas yang didukung, Anda dapat menerapkan semua penyedia peristiwa dengan cara yang sama.

Prosedur berikut menjelaskan cara mengimplementasikan penyedia peristiwa.

Untuk mengimplementasikan penyedia peristiwa

  1. Desain dan daftarkan penyedia kelas Anda dengan WMI.

    Penyedia kelas mendaftar dengan WMI dengan membuat instans __Win32Provider dan kelas __EventProviderRegistration . Untuk informasi selengkapnya, lihat Mendaftarkan Penyedia Peristiwa.

  2. Terapkan antarmuka IWbemProviderInit untuk penyedia Anda.

    Antarmuka IWbemProviderInit adalah antarmuka umum yang digunakan WMI untuk memuat dan menginisialisasi semua penyedia. Untuk informasi selengkapnya, lihat Menginisialisasi Penyedia.

  3. Terapkan IWbemEventProvider sebagai antarmuka utama untuk penyedia Anda.

    Antarmuka IWbemEventProvider menggunakan metode ProviderEvents untuk menyediakan peristiwa ke WMI. Untuk informasi selengkapnya, lihat Menerapkan Antarmuka Utama untuk Penyedia Peristiwa.

    Catatan

    Penyedia peristiwa harus menggunakan model multithreading "Keduanya".

     

  4. Secara opsional, Anda juga dapat mengimplementasikan antarmuka IWbemEventProviderQuerySink untuk meningkatkan performa penyedia peristiwa Anda.

    Antarmuka IWbemEventProviderQuerySink memungkinkan penyedia untuk mengoptimalkan kueri sebelum mengirim respons ke WMI, dan paling berguna untuk penyedia yang menyediakan peristiwa dari beberapa jenis dan yang perlu melakukan pengoptimalan internal sebanyak mungkin. Untuk informasi selengkapnya, lihat Mengoptimalkan Penyedia Peristiwa.

  5. Terapkan antarmuka IWbemEventProviderSecurity untuk membatasi konsumen ke pengidentifikasi keamanan (SID) tertentu atau menerapkan IWbemEventSink::SetSinkSecurity untuk mengamankan sink itu sendiri. Penyedia juga dapat mengatur properti SECURITY_DESCRIPTOR di kelas peristiwa untuk mengamankan peristiwa individual dalam kode MOF. Untuk informasi selengkapnya, lihat Mengamankan Peristiwa WMI.

  6. Tambahkan kode tambahan yang diperlukan untuk penyedia Anda.

    Saat merancang penyedia Anda, Kemungkinan besar Anda perlu memanggil antarmuka WMI. Untuk informasi selengkapnya, lihat Memanggil Metode.

    Saat mengambil informasi untuk klien, Anda mungkin perlu mengakses tingkat keamanan untuk klien tersebut. Untuk informasi selengkapnya, lihat Meniru Klien.

  7. Ganti penyedia yang sudah ada sebelumnya dengan kode baru Anda.

    Anda tidak perlu melakukan langkah ini jika Anda tidak memiliki penyedia yang sudah ada sebelumnya untuk disalin. Untuk informasi selengkapnya, lihat Memperbarui Penyedia.

Aplikasi klien dapat meminta peristiwa dengan mendaftarkan dirinya dengan WMI sebagai konsumen peristiwa. Untuk informasi selengkapnya, lihat Menerima Peristiwa WMI.