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

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

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

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

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

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

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

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