从Windows 2000操作系统开始,用户会发现在为爱机安装某些新硬件的驱动程序时,会弹出一个没有数字签名的警告对话框,这个对话框让用户看起来很不爽,它说这个刚买回来的新硬件有可能是不可靠的,有可能影响整机的稳定性。当然,通常购自于名牌大厂的硬件就不会有这样的提示,这是怎么一回事呢?
驱动程序的数字签名是电脑硬件和驱动程序可靠性和兼容性的一个标志。原来,早在Windows 9x时代,通过大量的用户调查,微软公司就发现之所以有操作系统蓝屏错误的发生往往与不可靠的硬件和编制不良的驱动程序有关。蓝屏错误的专业术语叫GP错,即General Protect Error,是用户最讨厌看到的东西了,因为一旦出现了这个画面,多数情况意味着用户的数据已经无法挽回了,只有关机重开或者按Reset键“掐人中”了。
让我们来看看GP错与驱动程序的关系。Windows操作系统中把内存划分为核心模式区和用户模式区两部分,在核心模式区内运行操作系统自身的管理代码和硬件驱动程序这些“底层”的软件,而用户模式区内运行的是应用程序,如MS Word或Adobe Photoshop等等。我们日常接触到的软件大都属于应用程序,都运行在用户模式下,包括Windows自身的用户界面也都是运行在用户模式下的。运行在用户模式下的应用程序的共同特点是即使发生了错误,也只影响到这个程序本身,比如Word死掉了,我们可以使用“任务管理器”将它强制关闭,Word中的数据可能丢失但操作系统中其他软件仍可运行,这就是所谓的操作系统保护。这时并不会发生蓝屏错误。但核心模式下的软件一旦发生错误,就会有蓝屏发生了,因为操作系统队核心模式下基本上没有保护,所以就会发生“保护错”(General Protect Error)。
Windows操作系统本身运行在核心模式下的程序往往经过微软公司内部比较系统全面的测试,所以在用户使用中由于Windows核心程序出错而导致蓝屏错误的情况很少。驱动程序是由各个硬件厂家配合他们出品的计算机硬件提供的,多数的名牌大厂也能做到合理的开发和完善的测试,都有着严格的质量控制体系,所以一般也很少出问题。但一些小厂商为了赶开发进度或者降低成本,兼容性测试和质量控制会不够完善,往往会将一些隐含缺陷的驱动程序搭配硬件出售。用户购买了这样的产品就带来了使用中的隐患。微软公司发现多数的蓝屏都是由于这样的原因。这也是杂牌小厂的产品往往质量上不如名牌大厂产品的一个原因。使用不可靠的硬件往往会发生电脑莫名其妙地突然死机、自动重起或者蓝屏。过去人们往往归罪于微软,指责Windows操作系统不稳定,微软感到十分委屈,无端被了不良硬件厂家的黑锅。不过操作系统是电脑最基本的软件平台,微软也应该为整机的稳定性承担必要的责任。为了提高整机系统的稳定性,减少用户对操作系统的指责,微软推出了一个机制来识别“好的”和“不好的”驱动程序,对于一个“好的”驱动程序,则配上一个扩展名为.cat的文件,使用加密算法记录这个驱动程序由哪些文件构成,这些文件是否都是原始文件,是否都没有被修改,这个文件将与这个驱动程序文件放在一起,成为驱动程序的一部分,这个文件就被叫做该驱动程序的数字签名。
那么硬件厂商或开发者自己开发了一个新的驱动程序后,怎样能像一个名牌大厂那样为驱动程序搭配上这样一个文件呢?当前,微软公司对数字签名文件的管理很严格,必须到微软的硬件质量实验室(Windows Hardware Quality Lab,按各单词字头缩写简称为WHQL)去申请才行,幸好这个申请手续并不复杂。微软WHQL推出了一套不断更新的测试软件就叫HCT(Hardware Compatibility Test,即硬件兼容性测试),这个测试工具集可以在微软的网站上免费下载到最新版本,当前刚刚发布了12.1版本,驱动程序的开发人员可以使用HCT这个工具对自己的驱动程序进行测试,如果这些测试项目都能通过,就可以通过因特网向WHQL申请数字签名了,当然微软公司要对每次申请收取250美金的申请费用,不过这笔费用对于一个即将在市场上批量销售的产品就不算多了。
HCT这个测试工具是既复杂又简单的。说它复杂是在于它包含了整机和部件几乎所有方面的测试内容,比如对于Data Center服务器有关的认证测试中最严格的一些项目都要求连续14天的连续运行测试。说它简单,是因为HCT中多数的测试都是自动测试,使用起来很轻松。即使是手工测试,通常也只需要进行一些简单的操作,并且有详细的联机文档可以给测试者提供详尽帮助。从这一点来说,即使是非专业人员也可以拿来使用,所以建议DIY的朋友们在攒完一台新电脑后,立即运行一遍HCT中的System test(系统测试),你的新机好坏就一目了然了。
下面我们就细说一下HCT这个测试工具集。HCT针对测试对象可分为两大类,系统测试和部件测试,系统测试又分为台式机,笔记本和服务器的测试,部件测试则分为声卡、网络设备、打印机、扫描仪等图形图像设备等。HCT测试是十分全面的,即使硬件设备不再以上分类中,那么仍可归类为Unclassified Device,即“未归类设备”。显示卡的测试是个例外,它作为单独的测试工具集DCT并不包含在HCT工具集中,需要单独下载,当前最新的DCT是5.3版本,需要在微软网站上单独下载。
从测试机理来说,HCT包括几个方面的测试,首先是总线方面的测试。计算机内外部件从系统架构上来看都是从属于几个总线上的,如PCI总线、USB总线或1394总线。HCT中就包括对这些总线有关的测试,如针对PCI设备就会有PCI Compliance Test,来检测这个被测硬件是否严格符合PCI规范的各种电气方面和功能方面的要求。如USB设备则有USB Address Descrīption Test、USB Device Framework(CV)等等。
再一类是驱动程序开发有关的测试,如ChkINF测试来检查驱动程序安装配置文件inf文件是否符合标准要求,对于想取得数字签名的驱动程序,该Inf文件必须包含一行catalogfile=xxx.cat,这是指出应有一个数字签名文件与这个驱动程序对应,因为这个cat文件来自微软公司,所以在HCT测试时还没有这个文件,但也要保留这样一行,因为如果一旦获得了数字签名文件,那么经过测试的这些文件就都不能有任何更改了,包括inf文件,所以一定要在取得数字签名文件前就在inf文件中增加这样一行。
另一类是有关功能方面的测试,如打印机测试会包括打印各种文本、图形图像的测试,Modem测试会包括传真和各种数据传送等与该设备功能有关的测试。
还有一类是ACPI有关的测试。ACPI是Advanced Computer Power Interface的缩写和简称。ACPI使PC机支持待机、休眠等各种省电状态,使用这些功能还能够改善开机速度,给用户带来很大的方便,但这一类功能也是当前设备支持较差的一个方面。很多设备对待机和休眠功能的支持都不完善,DIY者们尤其应该注意。
为新开发的硬件驱动程序申请数字签名,就要满足上述4大类的HCT测试项的严格检测,可以看出,即使不申请数字签名,应用这些测试到电脑硬件的研发环节中,对提高产品质量也是十分重要的。微软公司为鼓励硬件开发者通过WHQL测试来提高硬件及其驱动程序的兼容性和可靠性,还为WHQL申请者提供一系列的增值服务,目前通过WHQL测试的硬件产品,不但可以得到数字签名,取得最终用户更大的信任,还可以授权使用一个漂亮的徽标,这个徽标叫Designed for Windows Logo,译成中文就是“针对Windows而设计”徽标,这样购买带有数字签名的高质量硬件,用户并不需要去安装该硬件的驱动程序来检查它是否包含数字签名,而可以容易地从硬件产品的包装盒上一目了然地了解该产品的质量情况,有点像咱们国家的食品质量安全认证QS标志。我现在购买包装食品都要看是否有QS标志,它表示该食品的生产环节是符合国家有关的食品卫生标准的,是符合市场准入的质量要求的。同样选购心爱的电脑硬件也要看看它的包装盒上是否有Designed for Windows 标志。用户也可以在很多品牌电脑上看到这样的标志,这说明这个型号的整机是通过WHQL认证的,很多大企业采购电脑时都是以这个标志为基准的,但广大用户要注意的是,目前市场上的品牌电脑也是良莠不齐,包括很多知名品牌,他们的电脑也都没有这个标志,对于这样的产品,用户选购时可要三思而行呀。
从驱动程序开发的角度来说,要通过完整的WHQL测试也还是很有难度的,这是因为,HCT测试中不但包含了在标准场景下对驱动程序的检验,还包括一些苛刻条件下的测试,比如说所有驱动程序HCT测试中都包括的Driver Verifier Test Driver Path Exerciser Test测试,都是模拟在极端条件下,驱动程序的健壮性。Driver Verifier Test会像驱动程序发送大量的异常数据,驱动程序必须依照Windows的驱动程序开发的标准模型对这些异常数据进行妥善的处理,否则HCT测试是过不去的。这种测试,模仿了用户长期使用中可能遇到的偶然情况,如果驱动程序处理不好,就会发生蓝屏死机之类的故障,虽说是小概率事件,但是被谁遇到都不会愉快。而一般的常规测试都很难发现这类问题。不过对于这一类的问题可以通过建立一套双机互连的调试系统来实施跟踪调试 ,立即发现出问题的代码段,依照驱动程序开发包(DDK)的要求修正就可以了。另外一个好消息是虽然WHQL认证的机构在美国微软,但微软中国技术中心现在对国内的厂商和驱动程序开发者提供一些免费的与WHQL有关的支持。如果有什么特别的难题不易处理,可以与他们联络得到来自微软内部的支持。
数字签名可以简单地鉴别出“可靠”与“不可靠”驱动程序,所以DIY们在网上下载驱动时应尽可能选择WHQL认证的驱动程序。购买电脑硬件产品时,应应该了解清楚该硬件是否是经过Windows硬件质量认证的,是否有Designed for Windows标志。驱动程序的数字签名给硬件厂商带来了挑战,却为最终用户带来了实惠。
原文链接: http://blog.itpub.net/21364747/viewspace-1020358/