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


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

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

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

  • Повторная регистрация для получения уведомлений о целевом устройстве.

    Так как драйвер закрыл предыдущий дескриптор регистрации в ответ на уведомление об удалении запроса, драйвер должен открыть новый дескриптор. Драйвер должен:

    1. Удалите старую регистрацию с помощью IoUnregisterPlugPlayNotification.

    2. Откройте новый дескриптор устройства.

    3. Повторная регистрация для получения уведомления о новом дескрипторе с помощью IoRegisterPlugPlayNotification.