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


IRP_MN_CANCEL_REMOVE_DEVICE

Все драйверы PnP должны обрабатывать этот IRP.

Значение

0x03

Основной код

IRP_MJ_PNP

При отправке

Диспетчер PnP отправляет этот IRP, чтобы сообщить драйверам устройства о том, что устройство не будет удалено.

Диспетчер PnP отправляет этот IRP на PASSIVE_LEVEL IRQL в контексте системного потока.

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

Нет

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

Нет

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

Драйвер должен задать для Irp-IoStatus.Status> значение STATUS_SUCCESS для этого IRP. Если драйвер не выполняет этот IRP, устройство остается в несогласованном состоянии.

Операция

Этот IRP должен обрабатываться сначала драйвером родительской шины для устройства, а затем каждым более высоким драйвером в стеке устройств.

В ответ на этот IRP драйверы возвращают устройство в состояние, в которое оно находилось до получения запроса IRP_MN_QUERY_REMOVE_DEVICE .

Если устройство уже запущено, когда драйвер получает эту IRP, драйвер просто устанавливает состояние успешно и передает IRP следующему драйверу (или завершает IRP, если водитель является водителем шины). Для такой отмены и удаления IRP драйвер функции или фильтра не должен задавать подпрограмму завершения. Устройство может не находиться в состоянии ожидания удаления, так как, например, драйвер не выполнил предыдущее IRP_MN_QUERY_REMOVE_DEVICE.

Диспетчер PnP вызывает обратные вызовы уведомлений EventCategoryTargetDeviceChange с GUID_TARGET_DEVICE_REMOVE_CANCELLED после завершения запроса IRP_MN_CANCEL_REMOVE_DEVICE . Такие обратные вызовы регистрировались на устройстве путем вызова IoRegisterPlugPlayNotification. Диспетчер PnP также вызывает все компоненты пользовательского режима, зарегистрированные для уведомления на устройстве, вызывая Метод RegisterDeviceNotification.

Если на устройстве подключена файловая система, она должна отменить все операции, которые она выполняла в ответ на уведомление об удалении запроса.

См. Plug and Play для получения подробных сведений об обработке irps удаления и общих правил обработки всех Plug and Play незначительных IRP.

Отправка этого IRP

Зарезервировано для системного использования. Драйверы не должны отправлять этот IRP.

Требования

Заголовок

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

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

IoRegisterPlugPlayNotification

IRP_MN_QUERY_REMOVE_DEVICE