4

Что происходит, когда аппаратное устройство сопоставляет два или более файлов inf, когда Windows загружает драйверы для этих устройств?

Например, на жестком диске моего компьютера загружены два драйвера: cdrom.sys и iaStorF.sys. cdrom.sys был загружен из файла cdrom.inf, а iaStorF.sys был загружен из файла oem2.inf, который я установил в Intel.

Windows ищет все файлы inf и загружает что-нибудь, что соответствует?

Если это так, что является «основным INF-файлом», то, что я имею в виду под этим в диспетчере устройств, когда я нажимаю на диск и перехожу на вкладку «Подробности», а затем смотрю на имя inf, он показывает файл cdrom.inf, даже хотя это также соответствует oem2.inf.

Если я тогда посмотрю на свой монитор, который также имеет два драйвера для него, загруженные из двух файлов inf, oem22.inf и monitor.inf. Под «Подробности» и именем inf отображается oem22.inf.

Почему он выбрал oem22.inf вместо monitor.inf?

2 ответа2

3

Некоторая информация может быть найдена в этой старой статье Microsoft (время XP)
Как Windows определяет наиболее подходящий драйвер устройства для установки во время установки :

При запуске программы установки Windows у вас может быть несколько наборов драйверов устройств или файлов INF, которые работают с конкретным устройством. И Setup, и Plug and Play пытаются разрешить эти конфликты, выбрав драйвер устройства, наиболее подходящий для устанавливаемого устройства.

Plug and Play может искать во всех файлах .inf наиболее подходящий драйвер устройства для установки на конкретное устройство. Plug and Play не останавливает поиск при первом совпадении, которое находит Plug and Play. Plug and Play продолжает поиск всех INF-файлов, перечисленных в пути поиска Plug and Play, как определено в следующей записи реестра:

HKEY-LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion

DevicePath: REG_EXPAND_SZ:% SystemRoot%\Inf

Программа установки создает список совместимых драйверов устройств, которые содержат совпадения в INF-файле, и назначает "ранг" для каждого найденного файла. Ранг может варьироваться от "0" до "0xFFFF", где 0 - наиболее подходящее из возможных совпадений, а 0xFFFF - худшее из возможных совпадений. Драйвер устройства с наименьшим рейтингом считается наиболее подходящим из возможных совпадений и является установленным драйвером устройства.

Однако, если два драйвера устройства имеют одинаковый самый низкий ранг, программа установки использует драйвер устройства с самой последней датой. Если один из драйверов устройства подписан, а другой драйвер устройства не подписан, дате драйвера неподписанного устройства присваивается значение 0xFFFFFFFF, а подписанный драйвер устройства выбирается и устанавливается.

Следует отметить, что по умолчанию 64-разрядная версия Windows не будет принимать неподписанные драйверы в качестве кандидатов. Это возможно только в 32-битной Windows.

Следующая статья содержит последний алгоритм:Как Windows Ranks Drivers

Windows назначает ранг драйверу, который соответствует устройству. Ранг показывает, насколько хорошо драйвер соответствует устройству. Уровень водителя представлен целым числом, которое равно или больше нуля. Чем ниже рейтинг, тем лучше подходит драйвер для устройства.

Ранг драйвера является составным значением, которое зависит от того, как подписан драйвер, функций, которые поддерживаются драйвером, и типа соответствия между строками идентификации устройства, о которых сообщает устройство, и строками идентификации устройства, которые являются указывается в записях раздела INF-моделей INF-файла драйвера.

Ранг представлен значением типа DWORD. Ранг - это сумма оценки подписи, оценки функции и оценки идентификатора. Ранг форматируется как 0xSSGGTHHH, где S, G, T и H являются четырехбитными полями, а поля SS, GG и THHH представляют три ранговых оценки следующим образом:

  • Оценка подписи оценивает водителя согласно тому, как водитель подписан. Оценка подписи зависит только от значения поля SS. Неуказанная оценка подписи представляется как 0xSS0000000.

Обзор того, как Windows Vista и более поздние версии Windows используют подпись драйвера, чтобы определить, как устанавливается драйвер, см. В разделе « Категории подписи и установка драйвера».

По сути, цифровые подписи от подписывающего центра Windows получают самые высокие оценки.

  • Оценка функций ранжирует драйвер на основе функций, которые он поддерживает. Оценка функции зависит только от значения поля GG. Неуказанная оценка функции представлена как 0x00GG0000.

Эта информация указана в файле .inf, поэтому производитель может заказать собственные драйверы.

  • Оценка идентификатора ранжирует драйвер на основе типа соответствия между строкой идентификации устройства, о которой сообщает устройство, и строкой идентификации устройства, которая указана в записи раздела INF-моделей файла INF драйвера. Оценка идентификатора зависит только от значения поля THHH. Неопределенная оценка идентификатора представлена как 0x0000THHH.

Этот текст довольно запутанный и запутанный. Смотрите ссылку для лучшего описания идентификатора.

2

Это на самом деле один из главных драйверов. Другой, который вы видите, это драйвер фильтра - iaStorF.sys, где F означает фильтр.

Драйвер фильтра - это драйвер Microsoft Windows, который расширяет или модифицирует функцию периферийных устройств или поддерживает специализированное устройство в персональном компьютере. Это драйвер или программа или модуль, который вставляется в существующий стек драйверов для выполнения определенной функции.(Википедия)

Вот скриншот моей системы, для дисков, ее в

HKLM\System\CurrentControlSet\Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318}

Основной драйвер - это disk.sys, остальные 3 - это драйверы фильтров, EhStoreClass.sys и partmgr.sys являются драйверами MS по умолчанию в Windows 8, edevmon.sys из eset.

Для мониторов дополнительный inf является необязательным, используется для расширения емкости, например, цветовой профиль (.icm) или информация EDID, эти inf не требуются для работы монитора, необходим только monitor.sys. (MSDN)


Еще немного информации о драйвере фильтра, я просто воспроизведу его здесь для дальнейшего использования.(MSDN)

Драйверы фильтра - это дополнительные драйверы, которые добавляют значение или изменяют поведение устройства. Драйвер фильтра может обслуживать одно или несколько устройств. Драйверы фильтров шины

Драйверы фильтра шины обычно повышают ценность шины и поставляются Microsoft или системным производителем (см. Рисунок «Возможные уровни драйверов»). Драйверы фильтра шины не являются обязательными. Для шины может быть любое количество драйверов фильтра шины.

Драйвер фильтра шины может, например, реализовать собственные усовершенствования стандартного оборудования шины.

Для устройств, описанных в ACPI BIOS, диспетчер питания вставляет поставляемый Microsoft фильтр ACPI (драйвер фильтра шины) над драйвером шины для каждого такого устройства. Фильтр ACPI выполняет политику питания устройства и включает и выключает устройства. Фильтр ACPI прозрачен для других драйверов и отсутствует на машинах, не поддерживающих ACPI. Драйверы фильтров нижнего уровня

Драйверы фильтров нижнего уровня обычно изменяют поведение оборудования устройства (см. Рисунок «Возможные уровни драйверов»). Они обычно поставляются IHV и являются опциональными. Для устройства может быть любое количество низкоуровневых драйверов фильтра.

Драйвер фильтра низкоуровневого устройства отслеживает и / или изменяет запросы ввода-вывода для конкретного устройства. Как правило, такие фильтры переопределяют аппаратное поведение в соответствии с ожидаемыми спецификациями.

Драйвер фильтра низкоуровневого класса контролирует и / или изменяет запросы ввода-вывода для класса устройств. Например, драйвер фильтра низшего уровня для устройств мыши может обеспечить ускорение, выполняя нелинейное преобразование данных о движении мыши. Драйверы фильтров верхнего уровня

Драйверы фильтра верхнего уровня обычно предоставляют дополнительные функции для устройства (см. Рисунок «Возможные уровни драйверов»). Такие драйверы обычно предоставляются IHV и не являются обязательными. Для устройства может быть любое количество драйверов фильтра верхнего уровня.

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

Драйвер фильтра класса верхнего уровня добавляет значение для всех устройств определенного класса.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .