Запуск устройства

Диспетчер 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 помечает такое устройство как "неудачный запуск".

В этом разделе описываются следующие темы:

Запуск устройства в драйвере функции

Запуск устройства в драйвере фильтра

Запуск устройства в драйвере шины

Рекомендации по проектированию для запуска устройств