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;