Запуск устройства
Диспетчер PnP отправляет IRP_MN_START_DEVICE запрос драйверам для запуска нового перечисленного устройства или перезапуска существующего устройства, которое было остановлено для перебалансировки ресурсов.
Драйверы функций и фильтров должны задать подпрограмму IoCompletion , передать IRP_MN_START_DEVICE запрос в стеке устройств и отложить операции запуска до тех пор, пока все более низкие драйверы не завершат работу с IRP. Драйвер родительской шины , нижний драйвер в стеке устройств, должен быть первым драйвером, который выполняет операции запуска на устройстве, прежде чем устройство будет доступно другим драйверам.
Чтобы обеспечить правильную последовательность операций запуска, диспетчер PnP в Windows 2000 и более поздних версиях Windows откладывает предоставление интерфейсов устройств и блокирует создание запросов для устройства до успешного запуска IRP.
Если драйвер для устройства не выполняет запрос IRP_MN_START_DEVICE , диспетчер PnP отправляет запрос IRP_MN_REMOVE_DEVICE в стек устройств (в Windows 2000 и более поздних версиях Windows). В ответ на этот IRP драйверы устройства отменяют свои операции запуска (если они успешно запускают IRP), отменяют операции AddDevice и отключаются от стека устройств. Диспетчер PnP помечает такое устройство как "неудачный запуск".
В этом разделе описываются следующие темы:
Запуск устройства в драйвере функции
Запуск устройства в драйвере фильтра