Поделиться через


IRP_MN_DISABLE_EVENTS

Любой драйвер WMI, регистрирующий один или несколько блоков событий, должен обрабатывать этот IRP. Драйвер может обрабатывать WMI IRP путем вызова WmiSystemControl или обработки самого IRP, как описано в разделе Обработка запросов WMI.

Если драйвер вызывает WmiSystemControl для обработки запроса IRP_MN_DISABLE_EVENTS , WMI, в свою очередь, вызывает подпрограмму DpWmiFunctionControl этого драйвера.

Основной код

IRP_MJ_SYSTEM_CONTROL

При отправке

WMI отправляет этот IRP, чтобы сообщить драйверу о том, что потребитель данных не запрашивал дальнейшего уведомления о событии.

WMI отправляет этот IRP в IRQL = PASSIVE_LEVEL в произвольном контексте потока.

Входные параметры

Parameters.WMI.ProviderId указывает на объект устройства драйвера, который должен отвечать на запрос. Этот указатель находится в расположении стека ввода-вывода драйвера в IRP.

Parameters.WMI.DataPath указывает на GUID, который определяет блок событий для отключения.

Выходные параметры

Нет.

Блок состояния ввода-вывода

Если драйвер обрабатывает IRP путем вызова WmiSystemControl, WMI задает Irp-IoStatus.Status и Irp-IoStatus.Information в блоке состояния ввода-вывода>>.

В противном случае драйвер задает Irp-IoStatus.Status> значение STATUS_SUCCESS или соответствующее состояние ошибки, например следующее:

STATUS_WMI_GUID_NOT_FOUND

STATUS_INVALID_DEVICE_REQUEST

При успешном выполнении драйвер устанавливает значение Irp-IoStatus.Information> равным нулю.

Операция

Драйвер может обрабатывать WMI IRP путем вызова WmiSystemControl или обработки самого IRP, как описано в разделе Обработка запросов WMI.

Если драйвер обрабатывает WMI IRP путем вызова WmiSystemControl, эта подпрограмма вызывает подпрограмму DpWmiFunctionControl драйвера или возвращает STATUS_SUCCESS, если драйвер не определяет подпрограмму.

Если драйвер обрабатывает запрос IRP_MN_DISABLE_EVENTS сам, он должен делать это только в том случае, если Parameters.WMI.ProviderId указывает на тот же объект устройства, что и указатель, переданный драйвером в IoWMIRegistrationControl. В противном случае драйвер должен переслать запрос следующему драйверу.

Перед обработкой запроса драйвер должен определить, указывает ли Parameters.WMI.DataPath на GUID, поддерживаемый драйвером. В противном случае драйвер должен завершиться ошибкой IRP и вернуть STATUS_WMI_GUID_NOT_FOUND.

Если драйвер поддерживает блок событий, он отключает событие для всех экземпляров этого блока.

Драйверу не нужно проверка, отключены ли события для блока событий, так как WMI отправляет один запрос на отключение для этого блока событий, когда последний потребитель данных отключает событие. WMI не отправляет другой запрос на отключение без промежуточного запроса на включение.

Дополнительные сведения об определении блоков событий см. в разделе Проектирование блоков данных WMI и блоков событий.

Требования

Заголовок

Wdm.h (включая Wdm.h, Ntddk.h или Ntifs.h)

См. также раздел

DpWmiFunctionControl

IoWMIRegistrationControl

IRP_MN_ENABLE_EVENTS

WMILIB_CONTEXT

WmiSystemControl