Bagikan melalui


IRP_MN_ENABLE_EVENTS

Setiap driver WMI yang mendaftarkan satu atau beberapa blok peristiwa harus menangani IRP ini. Driver dapat menangani RUNP WMI baik dengan memanggil WmiSystemControl atau dengan menangani IRP itu sendiri, seperti yang dijelaskan dalam Menangani Permintaan WMI.

Jika driver memanggil WmiSystemControl untuk menangani permintaan IRP_MN_ENABLE_EVENTS , WMI pada gilirannya memanggil rutinitas DpWmiFunctionControl driver tersebut.

Kode Utama

IRP_MJ_SYSTEM_CONTROL

Ketika Dikirim

WMI mengirimkan IRP ini untuk memberi tahu pengemudi bahwa konsumen data telah meminta pemberitahuan peristiwa.

WMI mengirimkan IRP ini di IRQL = PASSIVE_LEVEL dalam konteks utas arbitrer.

Parameter Input

Parameters.WMI.ProviderId menunjuk ke objek perangkat driver yang harus merespons permintaan. Pointer ini terletak di lokasi tumpukan I/O driver di IRP.

Parameters.WMI.DataPath menunjuk ke GUID yang mengidentifikasi blok peristiwa untuk diaktifkan.

Parameters.WMI.BufferSize menunjukkan ukuran buffer yang tidak di-parameter di Parameters.WMI.Buffer, yang harus lebih besar dari atau sama dengan sizeof(WNODE_HEADER). Driver yang tidak mendaftarkan blok pelacakan (WMIREG_FLAG_TRACED_GUID) dapat mengabaikan parameter ini.

Parameters.WMI.Buffer menunjuk ke WNODE_HEADER yang menunjukkan apakah peristiwa harus dilacak (WMI_FLAGS_TRACED_GUID) dan menyediakan handel ke pencatat sistem. Driver yang tidak mendaftarkan blok pelacakan (WMIREG_FLAG_TRACED_GUID) dapat mengabaikan parameter ini.

Parameter Output

Tidak ada.

Blok Status I/O

Jika driver menangani IRP dengan memanggil WmiSystemControl, WMI menetapkan Irp-IoStatus.Status> dan Irp-IoStatus.Information> di blok status I/O.

Jika tidak, driver mengatur Irp-IoStatus.Status> ke STATUS_SUCCESS atau ke status kesalahan yang sesuai seperti berikut ini:

STATUS_WMI_GUID_NOT_FOUND

STATUS_INVALID_DEVICE_REQUEST

Jika berhasil, driver menetapkan Irp-IoStatus.Information> ke nol.

Operasi

Driver dapat menangani RUNP WMI baik dengan memanggil WmiSystemControl atau dengan menangani IRP itu sendiri, seperti yang dijelaskan dalam Menangani Permintaan WMI.

Jika driver menangani IRP WMI dengan memanggil WmiSystemControl, yang rutin memanggil rutinitas DpWmiFunctionControl driver, atau mengembalikan STATUS_SUCCESS jika driver tidak menentukan rutinitas.

Jika driver menangani permintaan IRP_MN_ENABLE_EVENTS itu sendiri, itu harus melakukannya hanya jika Parameters.WMI.ProviderId menunjuk ke objek perangkat yang sama dengan pointer yang diteruskan driver ke IoWMIRegistrationControl. Jika tidak, driver harus meneruskan permintaan ke driver berikutnya yang lebih rendah.

Sebelum driver menangani permintaan, driver harus menentukan apakah Parameters.WMI.DataPath menunjuk ke GUID yang didukung driver. Jika tidak, driver harus gagal IRP dan mengembalikan STATUS_WMI_GUID_NOT_FOUND.

Jika driver mendukung blok peristiwa, itu memungkinkan peristiwa untuk semua instans blok data tersebut.

Tidak perlu bagi driver untuk memeriksa apakah peristiwa sudah diaktifkan untuk blok peristiwa karena WMI mengirim satu permintaan untuk mengaktifkan blok peristiwa ketika konsumen data pertama mengaktifkan peristiwa. WMI tidak akan mengirim permintaan lain untuk diaktifkan tanpa permintaan penonaktifan intervensi.

Driver yang mendaftarkan blok pelacakan (WMIREG_FLAG_TRACED_GUID) juga harus menentukan apakah akan mengirim peristiwa ke WMI atau ke pencatat sistem untuk pelacakan. Jika pelacakan diminta, Parameters.WMI.Buffer menunjuk ke struktur WNODE_HEADER di mana Bendera diatur dengan WNODE_FLAG_TRACED_GUID dan HistoricalContext berisi handel ke pencatat.

Untuk detail tentang menentukan blok peristiwa, mengirim peristiwa, dan melacak, lihat Instrumentasi Manajemen Windows.

Persyaratan

Header

Wdm.h (termasuk Wdm.h, Ntddk.h, atau Ntifs.h)

Lihat juga

DpWmiFunctionControl

IoWMIRegistrationControl

IRP_MN_DISABLE_EVENTS

WMILIB_CONTEXT

WmiSystemControl

WNODE_EVENT_ITEM

WNODE_HEADER