Обработка события 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 отправляет зарегистрированным драйверам уведомление об удалении и завершении без предварительного уведомления об удалении запроса. В этом случае драйвер должен выполнить любую необходимую очистку, например закрыть все дескрипторы устройства и удалить все оставшиеся ссылки на файловый объект.