Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Если пользователь удаляет устройство без предупреждения, просто отключив его без использования диспетчера устройств или служебной программы безопасного удаления оборудования, устройство считается "неожиданно удаленным". В этом случае платформа следует немного другой последовательности удаления. Это также происходит по процедуре неожиданного удаления в случае, если другой драйвер вызывает IoInvalidateDeviceState на устройстве, даже если устройство всё ещё физически присутствует. В последовательности сюрпризного удаления фреймворк сначала вызывает обратный вызов EvtDeviceSurpriseRemoval перед вызовом любого из других обратных вызовов в последовательности удаления. По завершении последовательности платформа уничтожает объект устройства. Драйверы для всех съемных устройств должны гарантировать, что обратные вызовы в путях завершения работы и запуска могут обрабатывать сбои, особенно сбои, вызванные удалением оборудования. Любые попытки доступа к оборудованию не должны ждать бесконечно, а должны быть подвержены таймаутам или сторожевому таймеру.
На следующей схеме продемонстрированы обратные вызовы, участвующие в удалении без предупреждения.
Если устройство не было в рабочем состоянии при удалении, платформа вызывает обратный вызов события EvtDeviceReleaseHardware сразу после EvtDeviceSurpriseRemoval. Он исключает промежуточные шаги, которые уже были выполнены при выходе устройства из рабочего состояния.