Windows 如何在安装过程中确定最适合的设备驱动程序进行安装

Windows 如何在安装过程中确定最适合的设备驱动程序进行安装,第1张

本文介绍的过程用于 在安装期间为设备选择最适合的设备驱动程序

当您运行 Windows 安装程序时,用于某个特定设备的设备驱动程序或 .inf 文件可能有多组。安装程序和即插即用功能都试图为要安装的设备选择最适合的设备驱动程序,以解决这些冲突。

注意:本文介绍的过程仅用于在安装程序的图形用户界面 (GUI) 阶段或安装程序运行完毕后所安装的设备。在安装程序的文本模式部分执行的大容量存储控制器检测和设备驱动程序选择使用的是另一个过程。

更多信息

有关大容量存储控制器检测过程的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

220845 在 Windows 安装期间添加第三方或更新的驱动程序

即插即用功能将尝试对硬件的即插即用标识 (ID)(在对设备进行枚举以后由设备固件或系统 BIOS 返回)与 .inf 文件中任何匹配的即插即用 ID 进行比较,以找到兼容的设备驱动程序。

即插即用功能可以搜索所有 .inf 文件,以便为特定设备找到最适合的设备驱动程序进行安装。该功能在找到第一个匹配项后并不停止搜索,而是继续搜索即插即用搜索路径中列出的所有 .inf 文件,搜索路径在以下注册表项中定义:

HKEY-LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion

DevicePath:Reg_Expand_SZ:%Systemroot%\Inf

注意:默认情况下,上述注册表位置仅包含这一个项,但如果您执行无人参与安装并在无人参与应答文件中使用了OemPnpDriversPath = 参数,则可能会向此注册表项附加其他路径。

安装程序会为在 .inf 文件中包含匹配项的兼容设备驱动程序生成一个列表,并对找到的每个驱动程序都指定一个“等级”。等级范围为从“0”到“0xFFFF”,其中 0 代表最适合的可能匹配项,而 0xFFFF 代表最不适合的可能匹配项。等级最低的设备驱动程序将被视为最适合的可能匹配项,并且是要安装的设备驱动程序。

设备驱动程序的等级分为以下范围:

0x0 到 0xfff:设备硬件 ID 与 .inf 文件中列出的硬件 ID 匹配。

0x1000 到 0x1fff:设备硬件 ID 与 .inf 文件中的一个兼容 ID 匹配。

0x2000 到 0x2fff:一个设备兼容 ID 与 .inf 文件中的硬件 ID 匹配。

0x3000 到 0x3fff:一个设备兼容 ID 与 .inf 文件中的兼容 ID 匹配。

0xFFFF:最不适合的匹配项。

在 Windows XP 和 Windows Server 2003 中,还存在其他设备驱动程序等级范围:

0x8000 到 0x8FFF:不受信任的硬件 ID 匹配项

0x9000 到 0x9FFF:不受信任的兼容 ID 匹配项

如果 .inf 文件未经过数字签名,或者 Model 节名称未包含 Windows NT 特定的修饰(设备可安装在 Windows NT、Windows 95 或 Windows 98 上,但它在这些 *** 作系统上不具有特定的项),则这些 .inf 文件将处于不受信任的范围。

如果安装程序确定某一设备驱动程序是不受信任的,它可以将该设备驱动程序的等级更改为前面所提到的适当范围。

处于 0x0 到 0xfff 范围的设备驱动程序等级称为“硬件 ID 匹配”,因为它们在硬件 ID 之间匹配。这些等级还被视为最适合的匹配项,而任何其他等级都将被列为“兼容”,这是因为在生成设备驱动程序等级时至少有一个兼容 ID。类别安装程序和辅助安装程序也会影响设备驱动程序的选择。如果这些安装程序确定设备驱动程序无法支持设备,或更改了设备驱动程序的等级,则它们会将该设备驱动程序标记为“无效”。

但是,如果两个设备驱动程序都具有最低的等级,安装程序将使用最新的设备驱动程序。如果一个设备驱动程序已经过签名,而另一个未经过签名,则将向未签名的设备驱动程序的日期赋予 0xFFFFFFFF 值,同时选择并安装已签名的设备驱动程序。

可能还会提供 OEM 提供的设备驱动程序,但可能不会选择和使用该程序。即使制造商提供了更新后的设备驱动程序,它也可能只是作为兼容的设备驱动程序编写的,因而会获得较高的等级并产生较差的匹配结果。安装程序在选择设备驱动程序匹配项时,不会考虑 OEM 提供的设备是否已经过数字签名。如果未经签名的设备驱动程序具有较低的等级,且匹配度优于任何其他内置设备驱动程序,则安装程序会选择并安装该设备驱动程序。

运行安装程序时,如果在任何 .inf 文件中均未找到匹配项,则会推迟设备安装,且该设备可能会在设备管理器中成为未知设备。引入新设备(安装过程之外)后,如果未在计算机中的任何 .inf 文件中找到匹配项,您可能会收到“找到了新的硬件”提示,并会被要求提供设备驱动程序。

例如,您在计算机上安装了 PCI 视频适配器,其即插即用 ID 显示在两个不同的 .inf 文件(Nv3_disp.inf 和 Nv4_disp.inf)中。这两个设备驱动程序文件均未经过数字签名,因此它们的日期都将被赋值为 0xFFFFFFFF。在此示例中,这两个文件位于以下 D:\Drivers\Video1 和 D:\Drivers\Video2 文件夹中。

注册表中的当前 Devicepath= 具有 %Systemroot%\Inf、%Systemdrive%\Drivers\Video1 和 %Systemdrive%\Drivers\Video2 项。

注意:%Systemroot% 为 D:\Winnt,%Systemdrive% 为 D:

安装程序和即插即用功能将搜索在上述路径中找到的所有 .inf 文件,并记录找到的任何匹配项。如果安装程序或即插即用功能找到了多个匹配项,则将使用最适合的匹配项。

以下摘自 Setupapi.log 文件的内容详细介绍了上述过程。在此示例中,安装程序的日志记录模式已设置为详细模式。有关进行此项设置的方法,请参见以下文章:

243996 如何在 Windows 2000 GUI 模式安装期间启用详细日志记录

如果安装程序运行正常,您将不会在 Setupapi.log 文件中看到如此多的详细信息。

当设备受到查询时,它将返回硬件 ID 和兼容 ID 的列表。并非所有设备都会返回多个 ID,但在多数情况下,它们确实如此。在此示例中,视频卡将返回以下 ID:

Searching for hardware IDs:

Pci\Ven_10de&dev_0028&subsys_5a001092&rev_11,

Pci\Ven_10de&dev_0028&subsys_5a001092,

Pci\Ven_10de&dev_0028&cc_030000,

Pci\Ven_10de&dev_0028&cc_0300

Searching for compatible IDs:

Pci\Ven_10de&dev_0028&rev_11,

Pci\Ven_10de&dev_0028,

Pci\Ven_10de&cc_030000,

Pci\Ven_10de&cc_0300,

Pci\Ven_10de,pci\cc_030000,

Pci\Cc_0300

Enumerating files D:\Winnt\Inf\*.inf

@ 07:11:59.191 : Opened PNF of "D:\Winnt\Inf\1394.inf".

@ 07:11:59.191 : Opened PNF of "D:\Winnt\Inf\accessor.inf".

@ 07:11:59.191 : Opened PNF of "D:\Winnt\Inf\acpi.inf".

@ 07:11:59.191 : Opened PNF of "D:\Winnt\Inf\adm_mult.inf".

@ 07:11:59.191 : Opened PNF of "D:\Winnt\Inf\adm_port.inf".

@ 07:11:59.207 : Opened PNF of "D:\Winnt\Inf\agtinst.inf".

.

.

.

Enumerating files D:\Drivers\Video1\*.inf

@ 07:12:00.660 : Opened PNF of "D:\Drivers\Video1\NV4_DISP.inf".

@ 07:12:00.660 : The file (D:\Drivers\Video1\NV4_DISP.inf) is not digitally

signed, ignoring driver date.

@ 07:12:00.660 :Found Pci\VEN_10DE&DEV_0028 in

D:\Drivers\Video1\NV4_DISP.infDevice: NVIDIA RIVA TNT2Driver: NVIDIA

RIVA TNT2Provider: NVIDIAMfg: NVIDIASection: nv4

@ 07:12:00.660 : Decorated section name: nv4

Enumerating files D:\Drivers\Video2\*.inf

@ 07:12:00.660 : Opened PNF of "D:\Drivers\Video2\NV3_DISP.inf".

@ 07:12:00.675 : The file (D:\Drivers\Video2\NV3_DISP.inf) is not digitally

signed, ignoring driver date.

@ 07:12:00.675 : Found PCI\VEN_10DE&DEV_0028 in

D:\Drivers\Video2\NV3_DISP.infDevice: NVIDIA RIVA TNT2Driver: NVIDIA

RIVA TNT2Provider: NVIDIAMfg: NVIDIASection: nv4

@ 07:12:00.675 : Decorated section name: nv4

@ 07:12:01.706 : Device install function: DIF_SELECTBESTCOMPATDRV.

@ 07:12:01.706 : Executing class installer.

@ 07:12:01.894 : Completed class installer.

@ 07:12:01.894 : Executing default installer.

@ 07:12:01.894 : Selected driver installs from section nv4 in D:\Drivers\Video1\Nv4_disp.inf.

@ 07:12:01.894 : Changed class GUID of device to {4D36E968-E325-11CE-BFC1-08002BE10318}.

@ 07:12:01.894 : Set selected driver.

@ 07:12:01.894 : Selected best compatible driver.

@ 07:12:01.894 : Completed default installer.

@ 07:12:06.565 : Device install function: DIF_ALLOW_INSTALL.

@ 07:12:06.565 : Executing class installer.

@ 07:12:06.565 : Completed class installer.

@ 07:12:06.581 : Device install function:DIF_INSTALLDEVICEFILES.

@ 07:12:06.581 : Executing class installer.

@ 07:12:06.581 : Completed class installer.

@ 07:12:06.581 : Executing default installer.

在该示例输出中,安装程序使用 D:\Drivers\Video1\Nv4_disp.inf 文件选择设备驱动程序并加以安装,因为安装程序发现该设备驱动程序是最适合的匹配项。

若要轻易找到已安装的设备及安装该设备时使用的 .inf 文件,请在 Windows 记事本中打开 %Systemroot%\Setupapi.log 文件,对即插即用安装的设备搜索 DIF_SelectBestCompatDrv,而对手动安装的设备搜索 DIF_SelectDevice。

英文名为“Device Driver”,全称为“设备驱动程序”是一种可以使计算机和设备通信的特殊程序,可以 说相当于硬件的接口, *** 作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。 因此,驱动程序被誉为“ 硬件的灵魂”、“硬件的主宰”、和“硬件和系统之间的桥梁”等。

电脑成功安装设备驱动程序的详细步骤如下:

1、在出现黄色叹号的USB驱动上右键点击,然后选择“更新驱动程序软件”。

2、点击“浏览计算机以查找驱动程序软件”。

3、如果你已经知道你要安装的U盘驱动程序所在的路径,直接点击“浏览“,然后选择,之后可以点击下一步,然后等待驱动程序安装完毕即可;如果没有相应的USB驱动,就点击“从计算机的设备驱动程序列表中选择”,然后点击“下一步”。

4、然后选中你要安装的USB驱动程序,点击“下一步”。

5、然后等待 *** 作系统提示,“Windows已经成功地更新驱动程序文件”,即可安装成功。

6、此时,U盘已经可以正确在电脑的磁盘列表里面出现了,也可正常使用了;如果打开设备管理器,其他设备里依然有设备显示黄色叹号,再次重复上面的步骤即可。

扩展资料:

设备驱动程序:

驱动程序一般指的是设备驱动程序(Device Driver),是一种可以使计算机和设备通信的特殊程序。相当于硬件的接口, *** 作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。

因此,驱动程序被比作“ 硬件的灵魂”、“硬件的主宰”、和“硬件和系统之间的桥梁”等。

驱动程序(Device Driver)全称为“设备驱动程序”,是一种可以使计算机和设备通信的特殊程序,可以说相当于硬件的接口, *** 作系统只能通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。

正因为这个原因,驱动程序在系统中的所占的地位十分重要,一般当 *** 作系统安装完毕后,首要的便是安装硬件设备的驱动程序。不过,大多数情况下,我们并不需要安装所有硬件设备的驱动程序,例如硬盘、显示器、光驱等就不需要安装驱动程序,而显卡、声卡、扫描仪、摄像头、Modem等就需要安装驱动程序。

另外,不同版本的 *** 作系统对硬件设备的支持也是不同的,一般情况下版本越高所支持的硬件设备也越多,例如笔者使用了Windows XP,装好系统后一个驱动程序也不用安装。

设备驱动程序用来将硬件本身的功能告诉 *** 作系统,完成硬件设备电子信号与 *** 作系统及软件的高级编程语言之间的互相翻译。当 *** 作系统需要使用某个硬件时,比如:让声卡播放音乐,它会先发送相应指令到声卡驱动程序,声卡驱动程序接收到后,马上将其翻译成声卡才能听懂的电子信号命令,从而让声卡播放音乐。

所以简单的说,驱动程序提供了硬件到 *** 作系统的一个接口以及协调二者之间的关系,而因为驱动程序有如此重要的作用,所以人们都称“驱动程序是硬件的灵魂”、“硬件的主宰”,同时驱动程序也被形象的称为“硬件和系统之间的桥梁”。

驱动程序即添加到 *** 作系统中的一小块代码,其中包含有关硬件设备的信息。有了此信息,计算机就可以与设备进行通信。驱动程序是硬件厂商根据 *** 作系统编写的配置文件,可以说没有驱动程序,计算机中的硬件就无法工作。

*** 作系统不同,硬件的驱动程序也不同,各个硬件厂商为了保证硬件的兼容性及增强硬件的功能会不断地升级驱动程序。如:Nvidia显卡芯片公司平均每个月会升级显卡驱动程序2-3次。驱动程序是硬件的一部分,当你安装新硬件时,驱动程序是一项不可或缺的重要元件。

凡是安装一个原本不属于你电脑中的硬件设备时,系统就会要求你安装驱动程序,将新的硬件与电脑系统连接起来。驱动程序扮演沟通的角色,把硬件的功能告诉电脑系统,并且也将系统的指令传达给硬件,让它开始工作。

参考资料来源:百度百科:设备驱动程序


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11626745.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存