IRP_MN_REMOVE_DEVICE

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

Значение

0x02

Основной код

IRP_MJ_PNP

При отправке

Диспетчер PnP использует этот IRP для направления драйверов на удаление программного представления устройства (объектов устройства и т. д.). Диспетчер PnP отправляет это IRP, если устройство было удалено упорядоченным образом (например, инициировано пользователем в программе "Отключить или извлечь оборудование"), неожиданно (пользователь извлекает устройство из слота без предварительного предупреждения) или когда пользователь запрашивает обновление драйверов.

В Системах Windows 2000 и более поздних версий диспетчер PnP также отправляет этот IRP, если один из драйверов в стеке устройств завершается сбоем IRP_MN_START_DEVICE запроса на устройство.

Для упорядоченного удаления устройства диспетчер PnP отправляет IRP_MN_QUERY_REMOVE_DEVICE перед удалением IRP. В этом случае устройство находится в состоянии ожидания удаления при поступлении IRP для удаления. Для неожиданного удаления устройства в Microsoft Windows 2000 или более поздней версии диспетчер PnP отправляет IRP_MN_SURPRISE_REMOVAL перед удалением IRP. В этом случае устройство находится в состоянии неожиданного удаления, когда происходит удаление IRP. Драйверы также могут получить удаление IRP перед запуском устройства. В этом случае устройство находится в нерабочем состоянии при поступлении IRP.

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

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

Нет

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

Нет

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

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

Операция

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

В ответ на это IRP драйверы выполняют такие задачи, как выключение устройства, удаление программного представления устройства (объекты устройства и т. д.) и освобождение всех ресурсов для устройства.

Дополнительные сведения об обработке этого IRP см. в разделе Обработка запроса IRP_MN_REMOVE_DEVICE. Общие сведения о поддержке удаления устройств см. в разделе Удаление устройства.

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

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

Если водитель автобуса обнаруживает, что одно (или несколько) его дочерних устройств (дочерних PDO) были физически удалены с компьютера, водитель автобуса вызывает IoInvalidateDeviceRelations , чтобы сообщить об изменении диспетчеру PnP. Затем диспетчер PnP отправляет команды irp удаления для всех исчезнувших устройств.

Требования

Заголовок

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

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

IoInvalidateDeviceRelations

IoRegisterPlugPlayNotification

IRP_MN_CANCEL_REMOVE_DEVICE

IRP_MN_QUERY_REMOVE_DEVICE

IRP_MN_SURPRISE_REMOVAL