Как PnP-менеджер определяет соответствующий драйвер функции? - PullRequest
0 голосов
/ 08 марта 2019

Я изучаю процесс загрузки драйвера Windows.
Но я не могу понять часть следующей статьи.

https://docs.microsoft.com/ja-jp/windows-hardware/drivers/install/step-3--the-driver-for-the-device-is-installed

В этой статье есть следующееdescription.

"4. Менеджер PnP загружает соответствующий драйвер функции и любые дополнительные драйверы фильтра для устройства."

У меня вопрос по поводу приведенного выше описания.
Как PnP-менеджер определяет соответствующий функциональный драйвер?

Например,
, когда USB-память подключена к ПК с Windows, тогда PnP-менеджер будет загружать disk.sys после загрузки драйвера, связанного с USB.
В этом случае я хочу знать, почему PnP-менеджер мог судить, что устройство соответствует disk.sys.
(где-то в реестре? Отправка некоторых запросов драйверу шины? И т. Д.) *

1 Ответ

0 голосов
/ 08 марта 2019

когда драйвер шины обнаруживает и сообщает PDO устройство PnP-менеджер устройства отправляет несколько IRP_MJ_PNP на PDO устройство.включая IRP_MN_QUERY_ID для получения Идентификационные строки устройства

, затем отформатированный путь к ключу реестра в форме

\REGISTRY\MACHINE\SYSTEM\CurrentControlSet\Enum\<BusQueryDeviceID>\<BusQueryInstanceID>

впоместите строку <BusQueryDeviceID>, возвращаемую устройством для BusQueryDeviceID, а строку <BusQueryInstanceID>, возвращенную устройством для BusQueryInstanceID (Parameters.QueryId.IdType)

, этот ключ открыт или создан.тогда был запрос для BusQueryHardwareIDs и BusQueryCompatibleIDs.результат этого запроса сохраняется в значениях HardwareID и CompatibleIDs REG_MULTI_SZ.

, а затем PnP-менеджер ищет значение Service REG_SZ под этим ключом - если он уже существует - драйвер (\REGISTRY\MACHINE\SYSTEM\CurrentControlSet\Services\<Service>) загружен и он AddDevice вызывается с этим PDO .если это значение еще не установлено - был произведен поиск по установленным файлам inf в системе - для лучшего соответствия HardwareID и CompatibleIDs.если найден драйвер - результат сохраняется под значением Service REG_SZ, в следующий раз нет поиска

...