Windows 如何使用 .inf 文件加载正确的驱动程序

RJS*_*h92 5 windows drivers inf computer-architecture

当 Windows 为该设备加载驱动程序时,如果硬件设备匹配两个或多个 inf 文件,会发生什么情况?

例如,我的 PC 中的磁盘驱动器加载了两个驱动程序,cdrom.sys 和 iaStorF.sys。cdrom.sys 是从 cdrom.inf 文件中加载的,iaStorF.sys 是从我从英特尔安装的 oem2.inf 文件中加载的。

Windows 是否搜索所有 inf 文件并加载任何匹配的文件?

如果是这样,哪个是“主要 INF 文件”,当我单击磁盘驱动器并转到“详细信息”选项卡,然后查看 inf 名称时,我在设备管理器中的意思是什么,它显示 cdrom.inf 文件,甚至虽然它也匹配 oem2.inf。

如果我再看看我的显示器,它也有两个驱动程序,它们是从两个 inf 文件 oem22.inf 和 monitor.inf 加载的。在“详细信息”和 inf 名称下,它显示 oem22.inf。

为什么它选择 oem22.inf 而不是 monitor.inf?

Chr*_*s.C 2

它实际上是一个主要驱动力。您看到的另一个是过滤器驱动程序 - iaStorF.sys,其中 F 表示过滤器。

过滤器驱动程序是 Microsoft Windows 驱动程序,可扩展或修改外围设备的功能或支持个人计算机中的专用设备。它是插入到现有驱动程序堆栈中以执行某些特定功能的驱动程序或程序或模块。(维基百科

这是我的系统的屏幕截图,对于磁盘驱动器,它位于

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

在此输入图像描述

主要驱动程序是disk.sys,其他3个都是过滤驱动程序,EhStoreClass.sys和partmgr.sys是Windows 8中默认的MS驱动程序,edevmon.sys来自eset。

对于显示器,附加的inf是可选的,用于扩展容量,例如颜色配置文件(.icm)或EDID信息,这些inf不是显示器运行所必需的,只需要monitor.sys。(MSDN


有关过滤器驱动程序的更多信息,我将在这里复制以供将来参考。(MSDN

过滤器驱动程序是可选驱动程序,可以为设备添加价值或修改设备的行为。过滤器驱动程序可以为一个或多个设备提供服务。总线滤波器驱动器

总线筛选器驱动程序通常会为总线增加价值,并由 Microsoft 或系统 OEM 提供(请参阅可能的驱动程序层图)。总线过滤器驱动程序是可选的。总线可以有任意数量的总线过滤驱动程序。

例如,总线过滤器驱动程序可以对标准总线硬件实施专有的增强功能。

对于 ACPI BIOS 描述的设备,电源管理器会在每个此类设备的总线驱动程序上方插入 Microsoft 提供的 ACPI 筛选器(总线筛选驱动程序)。ACPI 过滤器执行设备电源策略并打开和关闭设备电源。ACPI 过滤器对其他驱动程序是透明的,并且在非 ACPI 计算机上不存在。低级过滤器驱动程序

较低级别的筛选器驱动程序通常会修改设备硬件的行为(请参阅可能的驱动程序层图)。它们通常由 IHV 提供并且是可选的。一个设备可以有任意数量的较低级别的筛选器驱动程序。

较低级别的设备过滤驱动程序监视和/或修改对特定设备的 I/O 请求。通常,此类过滤器会重新定义硬件行为以匹配预期的规格。

较低级别的类过滤器驱动程序监视和/或修改一类设备的 I/O 请求。例如,用于鼠标设备的较低级过滤器驱动程序可以提供加速,执行鼠标移动数据的非线性转换。上层过滤器驱动程序

上层过滤器驱动程序通常为设备提供增值功能(请参阅可能的驱动程序层图)。此类驱动程序通常由 IHV 提供并且是可选的。一个设备可以有任意数量的上层过滤器驱动程序。

上层设备过滤驱动程序为特定设备增加了价值。例如,键盘的上层设备过滤驱动程序可以强制执行额外的安全检查。

上层类过滤器驱动程序为特定类的所有设备增加价值。