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


Правило PnpSurpriseRemove (wdm)

Правило PnpSurpriseRemove указывает, что драйвер не вызывает IoDeleteDevice или IoDetachDevice при обработке запроса IRP_MN_SURPRISE_REMOVAL .

Диспетчер PnP отправляет IRP_MN_SURPRISE_REMOVAL запрос на уведомление драйверов о том, что устройство больше не доступно для операций ввода-вывода и что оно, вероятно, было неожиданно удалено с компьютера.

  • Все драйверы PnP должны обрабатывать запрос IRP_MN_SURPRISE_REMOVAL .
  • Драйвер не должен вызывать IoDeleteDevice или IoDetachDevice для объектов устройства, пока IRP_MN_SURPRISE_REMOVAL IRP не будет успешно завершена и все открытые дескрипторы устройства не будут закрыты.
  • Затем диспетчер PnP отправляет запрос IRP_MN_REMOVE_DEVICE в стек устройств. В ответ на удаление IRP драйверы отсоединяют свои объекты устройств от стека и удаляют их.

Дополнительные сведения о том, как драйвер должен отвечать на запрос IRP_MN_SURPRISE_REMOVAL , см. в разделе Обработка запроса IRP_MN_SURPRISE_REMOVAL.

Модель драйвера: WDM

Как тестировать

Во время компиляции

Запустите средство проверки статических драйверов и укажите правило PnpSurpriseRemove .

Чтобы выполнить анализ кода, выполните следующие действия.
  1. Подготовьте код (используйте объявления типов ролей).
  2. Запустите средство проверки статических драйверов.
  3. Просмотр и анализ результатов.

Дополнительные сведения см. в статье Использование средства проверки статических драйверов для поиска дефектов в драйверах.

Применяется к

IoDeleteDeviceIoDetachDevice

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

Обработка запроса IRP_MN_SURPRISE_REMOVALанализ драйвера с помощью средств проверки и анализа кодаIRP_MN_SURPRISE_REMOVALIRP_MN_REMOVE_DEVICE