Bagikan melalui


IRP_MN_ENABLE_COLLECTION

Setiap driver WMI yang mendaftarkan satu atau beberapa blok datanya berpotensi memakan waktu, atau mahal, untuk dikumpulkan 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_COLLECTION , WMI pada gilirannya memanggil rutinitas DpWmiFunctionControl driver tersebut.

Kode Utama

IRP_MJ_SYSTEM_CONTROL

Ketika Dikirim

WMI mengirimkan IRP ini untuk meminta driver mulai mengumpulkan data untuk blok data yang didaftarkan driver mahal untuk dikumpulkan.

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 data yang datanya terakumulasi.

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 mendaftarkan blok data semahal untuk dikumpulkan dengan mengatur WMIREG_FLAG_EXPENSIVE di anggota Bendera struktur WMIREGGUID atau WMIGUIDREGINFO . Driver meneruskan struktur ini ke WMI ketika mendaftar atau memperbarui blok data. Driver tidak perlu mengumpulkan data untuk blok seperti itu sampai menerima permintaan eksplisit untuk memulai pengumpulan data.

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_COLLECTION itu sendiri, itu harus melakukannya hanya jika Parameters.WMI.ProviderId menunjuk ke objek perangkat yang sama dengan penunjuk yang diteruskan driver ke IoWMIRegistrationControl. Jika tidak, driver harus meneruskan permintaan ke driver berikutnya yang lebih rendah.

Sebelum menangani permintaan, driver harus memastikan bahwa Parameters.WMI.DataPath menunjuk ke GUID yang didukung driver. Jika tidak, driver harus gagal IRP dan mengembalikan STATUS_WMI_GUID_NOT_FOUND. Jika blok data valid tetapi tidak terdaftar di WMIREG_FLAG_EXPENSIVE, driver dapat mengembalikan STATUS_SUCCESS dan tidak mengambil tindakan lebih lanjut.

Jika blok valid dan terdaftar di WMIREG_FLAG_EXPENSIVE, driver mengaktifkan pengumpulan data untuk semua instans blok data tersebut.

Tidak perlu bagi driver untuk memeriksa apakah pengumpulan data sudah diaktifkan untuk blok data. WMI hanya mengirim satu permintaan untuk mengaktifkan blok data setelah konsumen data pertama mengaktifkan blok tersebut. WMI tidak akan mengirim permintaan lain untuk diaktifkan tanpa permintaan penonaktifan intervensi.

Persyaratan

Header

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

Lihat juga

DpWmiFunctionControl

IoWMIRegistrationControl

IRP_MN_DISABLE_COLLECTION

WMILIB_CONTEXT

WMIREGGUID

WmiSystemControl