驱动 与 HWID

  • A+
所属分类:技术文档

系统驱动搜索与安装程序可以自动搜索驱动并进行安装,这里就会有一个问题,系统驱动搜索与安装程序是怎么确定哪个驱动是适合哪个硬件的?有经验的朋友会说,是根据驱动的INF。是的,不过是驱动INF文件中的哪一段规定了什么硬件用什么驱动?

我们每个人都有身份证,身份证号是唯一的,理论上不会有哪个人的身份证号会和你的一样——除非有办假证的或者户籍管理机构出现差错,也就是说,我们每个人的身份证号唯一标志着我们每个人,一个身份证号对应一个人。硬件也有着这样的“身份证号”,这个身份证号被称为“HWID”(Hardwre ID),但与身份证号不同,一个硬件可能有多个与之对应的HWID,但一般只有其中一个是常用的,且只要这个硬件用过的任何一个HWID,其他硬件理论上不会重复使用。之所以说理论上,因为硬件的HWID也一定程度的存在着“办假证”和“户籍管理错误”。不过也不必过分担心这个,出现“重号”的几率相当低。

这也就是说,系统在寻找哪个硬件安装哪个驱动时,其实就是在寻找是否有与这个硬件的HWID匹配的驱动。则,势必驱动INF里有着这么一个对应列表。下面我以一段Intel的磁盘控制器驱动INF为例说一下:

[INTEL_HDC]
%PCI\VEN_8086&DEV_2682&CC_0104.DeviceDesc% = iaStor_Inst_RAID, PCI\VEN_8086&DEV_2682&CC_0104
%PCI\VEN_8086&DEV_27C3&CC_0104.DeviceDesc% = iaStor_Inst_RAID, PCI\VEN_8086&DEV_27C3&CC_0104
%PCI\VEN_8086&DEV_27C6&CC_0104.DeviceDesc% = iaStor_mobl_Inst_RAID, PCI\VEN_8086&DEV_27C6&CC_0104
%PCI\VEN_8086&DEV_2822&CC_0104.DeviceDesc% = iaStor_Inst_RAID, PCI\VEN_8086&DEV_2822&CC_0104
%PCI\VEN_8086&DEV_282A&CC_0104.DeviceDesc% = iaStor_mobl_Inst_RAID, PCI\VEN_8086&DEV_282A&CC_0104

在“INTEL_HDC”段中,我们注意每一个键都以“%”开头和结尾,这个我们可以暂且不管,此后我会和大家详细分享怎么读驱动的INF文件。但有一点大家要明白,“%”中包含的或许很像HWID,但绝对不是HWID,现在大家只要记住这一点就可以了。而真正的HWID,是“=”后第一个逗号后的内容,如“PCI\VEN_8086&DEV_2682&CC_0104”,这个才是HWID。大家现在可能还不能很准确而的确定HWID,不过有一段时间的经验后即会对这个很熟练了。

好,在知道了什么是HWID并明白了在INF里哪段是HWID后,那么在Windows下怎么看某个设备的HWID是什么?

打开设备管理器,展开硬件类型,右键单击某硬件,属性,详细信息选项卡,下拉菜单选中“硬件id”

驱动 与 HWID

可以看到我的ATI Radeon X1650XT对应着4个HWID。

还有一种获取HWID的方法,即使用DevCon.exe,DevCon.exe是微软提供的一种用于设备管理的命令行工具,我们封装时所使用的自动更改设备驱动就是以DevCon.exe为基础做的。
命令提示符下运行:“devcon.exe hwids * >d:\hwid.txt”

这样可以获取所有设备的HWID。而如果大家感觉麻烦的话,我用AU3编译好了一个自动获取HWID的小程序,提供给大家下载。注意,这个小工具只在WINDOWS桌面环境下运行才有效,PE下无效。

OK,本文内容比较简单,给大家讲述了什么是HWID,HWID在INF中的存在形式,以及如何在Windows下获取某硬件的HWID。

虽然本文没有详细阐述HWID的实用价值,但在随后的各种与HWID有关的文章中我将不再提及HWID和HWID的获取等。所以还请大家仔细阅读此文。希望此文可以对大家有帮助,谢谢您的阅读!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: