Обнаружение и распознавание устройств Plug and Play
Процессы, имеющие место при установке драйвера нового устройства, происходят в следующей последовательности:
- Пользователь подключает новое устройство к компьютеру. Обратите внимание, что если шина, к которой подключено устройство, поддерживает уведомление о неожиданном подключении нового устройства (hot-plug notification), то вы можете не останавливать Windows и не выключать компьютер,
- PnP Manager совместно с шинным драйвером производят энумерацию нового устройства. Шинный драйвер при поддержке шины получает уведомление о присутствии нового устройства, и, в свою очередь, уведомляет модуль PnP Manager режима ядра об изменении аппаратной конфигурации (в данном случае, о добавлении нового устройства). PnP Manager режима ядра запрашивает у шинного драйвера список физически присутствующих на шине устройств и сравнивает этот список с его предыдущей копией, чтобы определить, какое устройство было добавлено. Затем PnP Manager запрашивает у шинного драйвера информацию о новом устройстве (hardware ID, vendor ID, идентификаторы совместимых устройств).
- PnP Manager режима ядра уведомляет PnP Manager режима пользователя о необходимости установки нового устройства.
- PnP Manager режима пользователя создает новый процесс с использованием rundli32.exe и запускает модуль newdev.dll для установки нового устройства. Например, на рис. 2.12 показан вид окна программы-мастера Found New Hardware Wizard, предлагающего пользователю установить обнаруженное новое устройство (в данном случае, это – портативный накопитель Ziv, подключаемый к компьютеру через интерфейс USB).
Рис. 2.12. Мастер Found New Hardware Wizard предлагает пользователю установить драйверы для портативного накопителя Ziv
- DLL-библиотека, отвечающая за установку новых устройств, вызывает функции Setup API и функции диспетчера конфигурации PnP (CfgMgr API). Таким образом, Newdev.dll создает список драйверов, которые возможно использовать с данным устройством (рис. 2.13).
Рис. 2.13. Мастер Found New Hardware Wizard создает список драйверов, которые можно использовать с обнаруженным новым устройством