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 di instans konsumen, filter, dan pengikatan. Untuk informasi selengkapnya, lihat Menerima Peristiwa dengan Aman.

Prosedur berikut menjelaskan cara membuat filter peristiwa.

Untuk membuat filter peristiwa

  1. Buat instans kelas sistem WMI __EventFilter.

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

    • Gunakan skema privat.

      Memberikan nama sembarangan pada filter peristiwa Anda dapat dilakukan selama Anda tidak bertabrakan dengan skema penamaan filter lainnya. Anda harus menghindari konflik penamaan karena menambahkan instans dengan nilai Nama duplikat akan menimpa instans lama.

    • Gunakan pengidentifikasi unik global (GUID).

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

  3. Jelaskan tipe 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 ke WQL.

    Peristiwa log NT dihasilkan ketika permintaan kueri oleh konsumen acara permanen gagal. Sumber peristiwa adalah WinMgmt, ID peristiwa adalah 10, dan jenis peristiwanya adalah Kesalahan.

    WMI lebih efisien dalam memproses kueri spesifik 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 ke penyedia; ini memastikan bahwa hanya peristiwa yang cocok dengan filter yang dikenakan biaya komunikasi antarproseksi. Untuk informasi selengkapnya, lihat Mengkueri WMI.

  4. Atur properti QueryLanguage ke tipe 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, maka WMI akan membuat filter di namespace default. Kelas peristiwa intrinsik, seperti __InstanceOperationEvent tersedia di setiap namespace.

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