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


Обработка события GUID_TARGET_DEVICE_REMOVE_COMPLETE

Прежде чем диспетчер PnP отправит IRP_MN_REMOVE_DEVICE IRP драйверам для устройства, диспетчер PnP вызывает все процедуры обратного вызова уведомлений в режиме ядра, зарегистрированные для EventCategoryTargetDeviceChange на устройстве. Диспетчер PnP указывает NotificationStructure. Событие GUID_TARGET_DEVICE_REMOVE_COMPLETE.

При обработке события GUID_TARGET_DEVICE_REMOVE_COMPLETE подпрограмма обратного вызова уведомлений должна:

  • Удаление регистрации уведомлений на устройстве.

    Устройство было удалено, поэтому драйвер вызывает IoUnregisterPlugPlayNotification , чтобы удалить регистрацию уведомления.

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

  • Выполните обработку неожиданного удаления, если драйвер не получил предыдущее уведомление об удалении запроса.

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