Bagikan melalui


Membuat Filter Peristiwa

Filter peristiwa adalah kelas WMI yang menjelaskan peristiwa mana yang dikirimkan WMI kepada konsumen fisik. Misalnya, filter peristiwa dapat menginstruksikan WMI untuk mengirimkan ke konsumen semua peristiwa manajemen daya, atau semua peristiwa reboot sistem. Filter peristiwa juga menjelaskan kondisi di mana WMI mengirimkan peristiwa. Filter peristiwa dapat menentukan peristiwa intrinsik atau ekstrinsik; dan filter dapat merujuk ke peristiwa yang berasal dari namespace—yaitu, selain namespace filter. Konsumen permanen harus memiliki CreatorSID yang sama dalam instans konsumen, filter, dan pengikatan. Untuk informasi selengkapnya, lihat Menerima Peristiwa dengan Aman.

Prosedur berikut ini menjelaskan cara membuat filter peristiwa.

Untuk membuat filter peristiwa

  1. Buat instans kelas sistem __EventFilter WMI.

  2. Buat pengidentifikasi unik untuk filter Anda dengan properti Nama , dengan salah satu dari dua cara:

    • Gunakan skema privat.

      Penamaan filter peristiwa Anda secara sewenang-wenang berfungsi selama Anda tidak bertentangan dengan skema penamaan filter lainnya. Anda harus menghindari konflik penamaan karena menambahkan instans dengan nilai Nama duplikat menimpa instans lama.

    • Gunakan pengidentifikasi unik global (GUID).

      Jika Anda membiarkan Nama kosong, WMI mengisi Nama dengan GUID.

  3. Jelaskan jenis peristiwa yang ingin Anda filter dengan properti Kueri .

    Properti Kueri berisi kueri WMI Query Language (WQL) yang menjelaskan jenis peristiwa yang ingin Anda filter. Anda dapat mencapai pemfilteran yang tepat menggunakan berbagai operator dan ekstensi untuk WQL.

    Peristiwa Log NT dihasilkan saat kueri dari konsumen peristiwa permanen gagal. Sumber peristiwa adalah WinMgmt, ID peristiwa adalah 10, dan jenis peristiwanya adalah Kesalahan.

    WMI lebih efisien dalam memproses kueri tertentu yang ketat daripada kueri yang luas. Dengan membuat kueri tertentu, Anda dapat menghindari komunikasi antarproses dan lalu lintas jaringan yang tidak perlu. Dalam kasus peristiwa yang dihasilkan oleh penyedia, WMI melakukan pemfilteran dalam proses kepada penyedia; ini memastikan bahwa hanya peristiwa yang cocok dengan filter yang dikenakan biaya komunikasi antarprosek. Untuk informasi selengkapnya, lihat Mengkueri WMI.

  4. Atur properti QueryLanguage ke jenis bahasa kueri yang Anda gunakan di properti Kueri .

    Anda hampir selalu mengatur QueryLanguage ke "WQL".

Contoh kode berikut menjelaskan filter peristiwa yang memberi sinyal peristiwa setiap kali WMI membuat instans kelas __TimerEvent di namespace root\cimv2.

instance of __EventFilter as $FILTER
{
    Name = "MyFilterName";
    Query = "select * from __TimerEvent where TimerID=\"MyTimer\"";
    QueryLanguage = "WQL";
    EventNamespace = "\root\cimv2";

    // this is the Administrators SID in array of bytes format
    CreatorSID = {1,2,0,0,0,0,0,5,32,0,0,0,32,2,0,0}; 
};

Properti EventNamespace menentukan namespace tempat peristiwa berasal. Anda tidak perlu membuat instans filter di namespace tempat peristiwa berasal. Jika Anda tidak menentukan namespace layanan, maka WMI membuat filter di namespace default. Kelas peristiwa intrinsik, seperti __InstanceOperationEvent tersedia di setiap namespace layanan.

Untuk mendaftarkan konsumen logis Anda untuk pemberitahuan peristiwa, Anda harus mengikat filter peristiwa ke konsumen logis. Untuk informasi selengkapnya, lihat Mengikat Filter Peristiwa dengan Konsumen Logis.