Переходы состояния для устройств PnP

В системе PnP устройство проходит через различные состояния PnP, когда оно настраивается, запускается, возможно, останавливается для перебалансировки ресурсов и, возможно, удаляется. В этом разделе представлен обзор состояний устройства PnP. Обзор является дорожной картой для большей части поддержки PnP, необходимой для водителя. Другие части этой документации подробно описывают каждый переход состояния.

На следующем рисунке показаны состояния PnP для устройства и переход устройства из одного состояния в другое.

схема, иллюстрирующая состояния устройства с точки зрения концепции plug and play.

Начиная с верхней левой части предыдущего рисунка, устройство PnP физически присутствует в системе, так как пользователь только что вставил устройство или устройство присутствовало во время загрузки. Устройство еще не известно системному программному обеспечению.

Чтобы начать настройку программного обеспечения для устройства, диспетчер PnP и драйвер родительской шины перечисляют устройство. Диспетчер PnP, возможно, с помощью компонентов пользовательского режима, определяет драйверы для устройства, включая драйвер функции и любые дополнительные драйверы фильтров. Диспетчер PnP вызывает подпрограмму DriverEntry каждого драйвера, если драйвер еще не загружен. Дополнительные сведения о создании отчетов и перечислении устройства PnP см. в статье "Добавление устройства PnP в запущенную систему".

После инициализации драйвера он должен быть готов к инициализации своих устройств. Диспетчер PnP вызывает подпрограмму AddDevice драйвера для каждого устройства, которым управляет драйвер.

Когда драйвер получает запрос IRP_MN_START_DEVICE от диспетчера PnP, драйвер запускает устройство и готов обрабатывать запросы ввода-вывода для устройства. Сведения об обработке запроса IRP_MN_START_DEVICE см. в разделе "Запуск устройства".

Если диспетчер PnP должен перенастроить аппаратные ресурсы активного устройства, он отправляет IRP_MN_QUERY_STOP_DEVICE и IRP_MN_STOP_DEVICE запросы драйверам устройства. После перенастройки аппаратных ресурсов диспетчер PnP направляет драйверы для перезапуска устройства, отправляя запрос IRP_MN_START_DEVICE . Сведения об обработке остановки IRP см. в разделе "Остановка устройства". (Драйверы для загрузочного устройства могут получать IRP_MN_QUERY_STOP_DEVICE и IRP_MN_STOP_DEVICE запросы до запуска устройства, хотя этот шаг не показан на предыдущем рисунке.)

В Windows 98/Me диспетчер PnP также отправляет IRP_MN_QUERY_STOP_DEVICE и IRP_MN_STOP_DEVICE запросы при отключении устройства. Драйверы в этих системах также получают запрос IRP_MN_STOP_DEVICE после сбоя запуска.

Когда устройство PnP физически удаляется из системы или уже удалено, диспетчер PnP отправляет различные IRPs драйверам устройства, направляя их на удаление программного представления устройства (объекты устройств и т. д.). Сведения об обработке удаления IRP см. в разделе "Удаление устройства".

В какой-то момент после удаления всех устройств драйвера диспетчер PnP вызывает подпрограмму выгрузки драйвера и выгрузит водителя.