Menentukan Jenis Peristiwa yang Akan Diterima

Sebelum mendaftar untuk menerima acara, Anda harus menentukan jenis peristiwa yang akan diterima: intrinsik atau ekstrinsik. Untuk informasi selengkapnya tentang cara menerima peristiwa, lihat Menerima Peristiwa WMI. Untuk informasi selengkapnya tentang menyediakan peristiwa, lihat Mengembangkan Penyedia WMI dan Menulis Penyedia Peristiwa. Untuk informasi selengkapnya tentang masalah keamanan untuk menerima dan menyediakan peristiwa, lihat Mengamankan Peristiwa WMI.

Peristiwa Intrinsik

Peristiwa intrinsik adalah peristiwa yang terjadi sebagai respons terhadap perubahan model data WMI standar. Setiap kelas peristiwa intrinsik mewakili jenis perubahan tertentu dan terjadi ketika WMI atau penyedia membuat, menghapus, atau memodifikasi namespace, kelas, atau instans kelas. Misalnya, pembuatan instans Win32_LogicalDisk akan menghasilkan instans __InstanceCreationEvent .

WMI membuat peristiwa intrinsik untuk objek yang disimpan di repositori WMI. Penyedia menghasilkan peristiwa intrinsik untuk kelas dinamis, tetapi WMI dapat membuat instans untuk kelas dinamis jika tidak ada penyedia yang tersedia. WMI menggunakan polling untuk mendeteksi perubahan. Tabel berikut mencantumkan kelas sistem yang digunakan WMI untuk melaporkan peristiwa intrinsik.

Kelas sistem Deskripsi
__ClassCreationEvent Memberi tahu konsumen saat kelas dibuat.
__ClassDeletionEvent Memberi tahu konsumen saat kelas dihapus.
__ClassModificationEvent Memberi tahu konsumen saat kelas dimodifikasi.
__InstanceCreationEvent Memberi tahu konsumen saat instans kelas dibuat.
__InstanceOperationEvent Memberi tahu konsumen saat peristiwa instans terjadi, seperti pembuatan, penghapusan, atau modifikasi instans. Anda dapat menggunakan kelas ini dalam kueri untuk mendapatkan semua jenis peristiwa yang terkait dengan instans.
__InstanceDeletionEvent Memberi tahu konsumen saat instans dihapus.
__InstanceModificationEvent Memberi tahu konsumen saat instans dimodifikasi.
__NamespaceCreationEvent Memberi tahu konsumen saat namespace dibuat.
__NamespaceDeletionEvent Memberi tahu konsumen saat namespace dihapus.
__NamespaceModificationEvent Memberi tahu konsumen saat namespace dimodifikasi.
__ConsumerFailureEvent Memberi tahu konsumen ketika beberapa peristiwa lain dihilangkan karena kegagalan di bagian konsumen peristiwa.
__EventDroppedEvent Memberi tahu konsumen ketika beberapa peristiwa lain dihilangkan alih-alih dikirimkan ke konsumen peristiwa yang meminta.
__EventQueueOverflowEvent Memberi tahu konsumen ketika suatu peristiwa dihilangkan sebagai akibat dari luapan antrean pengiriman.
__MethodInvocationEvent Memberi tahu konsumen ketika peristiwa panggilan metode terjadi.

 

Peristiwa Ekstrinsik

Peristiwa ekstrinsik adalah kejadian yang telah ditentukan sebelumnya yang tidak dapat ditautkan langsung ke perubahan dalam model data WMI. Oleh karena itu, WMI memungkinkan penyedia acara untuk menentukan kelas peristiwa yang menjelaskan peristiwa tersebut. Misalnya, peristiwa yang menjelaskan peralihan komputer ke mode siaga adalah peristiwa ekstrinsik. Penyedia memperoleh peristiwa ekstrinsik dari kelas sistem __ExtrinsicEvent , yang merupakan subkelas dari kelas sistem __Event . Penyedia Registri Sistem dan SNMP menentukan kelas peristiwa ekstrinsik, seperti RegistryKeyChangeEvent, yang memberi tahu konsumen ketika kunci registri diubah. Untuk informasi selengkapnya, lihat Mendaftar untuk Peristiwa Registri Sistem dan Menulis Penyedia Peristiwa.

Dalam contoh berikut, penyedia peristiwa melaporkan pelanggaran keamanan ke satu atau beberapa bangunan. Kelas berikut mungkin didefinisikan untuk peristiwa ekstrinsik yang mewakili pelanggaran keamanan.

class SecurityViolationEvent : __ExtrinsicEvent
{
   string Building;           // building where violation occurred
   sint32 EntranceNumber;     // entrance where violation occurred
   datetime TimeOfDetection;  // date and time of violation
}

Untuk menerima pemberitahuan pelanggaran keamanan, konsumen mendaftar untuk jenis peristiwa SecurityViolationEvent. Kecuali ditentukan lain, konsumen menerima pemberitahuan semua pelanggaran keamanan selama semua periode waktu dan di semua bangunan. Kelas acara juga berisi informasi yang dapat digunakan konsumen untuk meminta peristiwa yang lebih spesifik.

Dalam contoh berikut, kueri mendaftarkan konsumen untuk peristiwa pelanggaran keamanan hanya dalam membangun 24.

SELECT * FROM SecurityViolationEvent WHERE Building = 24;