No.

发布新日志

  • [论坛] WHQL测试(1)_获取数字签名的重要性

    2007-04-24 21:54:39Top 1 Digest 1

    加入海辉公司嵌入式测试部门已经五个月了,第一个项目HP打印机驱动程序测试已经接近尾声了,回想一下还有蛮多的经验要总结。在项目后期去做WHQL测试了,感觉WHQL还是有很多东西值得去深入学习的。

    Windows 2000操作系统开始,用户会发现在为爱机安装某些新硬件的驱动程序时,会弹出一个没有数字签名的警告对话框,这个对话框让用户看起来很不爽,它说这个刚买回来的新硬件有可能是不可靠的,有可能影响整机的稳定性。当然,通常购自于名牌大厂的硬件就不会有这样的提示,这是怎么一回事呢?

     驱动程序的数字签名是电脑硬件和驱动程序可靠性和兼容性的一个标志。原来,早在Windows 9x时代,通过大量的用户调查,微软公司就发现之所以有操作系统蓝屏错误的发生往往与不可靠的硬件和编制不良的驱动程序有关。蓝屏错误的专业术语叫GP错,即General Protect Error,是用户最讨厌看到的东西了,因为一旦出现了这个画面,多数情况意味着用户的数据已经无法挽回了,只有关机重开或者按Reset键“掐人中”了。

     让我们来看看GP错与驱动程序的关系。Windows操作系统中把内存划分为核心模式区和用户模式区两部分,在核心模式区内运行操作系统自身的管理代码和硬件驱动程序这些“底层”的软件,而用户模式区内运行的是应用程序,如MS WordAdobe Photoshop等等。我们日常接触到的软件大都属于应用程序,都运行在用户模式下,包括Windows自身的用户界面也都是运行在用户模式下的。运行在用户模式下的应用程序的共同特点是即使发生了错误,也只影响到这个程序本身,比如Word死掉了,我们可以使用“任务管理器”将它强制关闭,Word中的数据可能丢失但操作系统中其他软件仍可运行,这就是所谓的操作系统保护。这时并不会发生蓝屏错误。但核心模式下的软件一旦发生错误,就会有蓝屏发生了,因为操作系统队核心模式下基本上没有保护,所以就会发生“保护错”(General Protect Error)。

     Windows操作系统本身运行在核心模式下的程序往往经过微软公司内部比较系统全面的测试,所以在用户使用中由于Windows核心程序出错而导致蓝屏错误的情况很少。驱动程序是由各个硬件厂家配合他们出品的计算机硬件提供的,多数的名牌大厂也能做到合理的开发和完善的测试,都有着严格的质量控制体系,所以一般也很少出问题。但一些小厂商为了赶开发进度或者降低成本,兼容性测试和质量控制会不够完善,往往会将一些隐含缺陷的驱动程序搭配硬件出售。用户购买了这样的产品就带来了使用中的隐患。微软公司发现多数的蓝屏都是由于这样的原因。这也是杂牌小厂的产品往往质量上不如名牌大厂产品的一个原因。使用不可靠的硬件往往会发生电脑莫名其妙地突然死机、自动重起或者蓝屏。过去人们往往归罪于微软,指责Windows操作系统不稳定,微软感到十分委屈,无端被了不良硬件厂家的黑锅。不过操作系统是电脑最基本的软件平台,微软也应该为整机的稳定性承担必要的责任。为了提高整机系统的稳定性,减少用户对操作系统的指责,微软推出了一个机制来识别“好的”和“不好的”驱动程序,对于一个“好的”驱动程序,则配上一个扩展名为.cat的文件,使用加密算法记录这个驱动程序由哪些文件构成,这些文件是否都是原始文件,是否都没有被修改,这个文件将与这个驱动程序文件放在一起,成为驱动程序的一部分,这个文件就被叫做该驱动程序的数字签名。

     那么硬件厂商或开发者自己开发了一个新的驱动程序后,怎样能像一个名牌大厂那样为驱动程序搭配上这样一个文件呢?当前,微软公司对数字签名文件的管理很严格,必须到微软的硬件质量实验室(Windows Hardware Quality Lab,按各单词字头缩写简称为WHQL)去申请才行,幸好这个申请手续并不复杂。微软WHQL推出了一套不断更新的测试软件就叫HCTHardware Compatibility Test,即硬件兼容性测试),这个测试工具集可以在微软的网站上免费下载到最新版本,当前刚刚发布了12.1版本,驱动程序的开发人员可以使用HCT这个工具对自己的驱动程序进行测试,如果这些测试项目都能通过,就可以通过因特网向WHQL申请数字签名了,当然微软公司要对每次申请收取250美金的申请费用,不过这笔费用对于一个即将在市场上批量销售的产品就不算多了。

     HCT这个测试工具是既复杂又简单的。说它复杂是在于它包含了整机和部件几乎所有方面的测试内容,比如对于Data Center服务器有关的认证测试中最严格的一些项目都要求连续14天的连续运行测试。说它简单,是因为HCT中多数的测试都是自动测试,使用起来很轻松。即使是手工测试,通常也只需要进行一些简单的操作,并且有详细的联机文档可以给测试者提供详尽帮助。从这一点来说,即使是非专业人员也可以拿来使用,所以建议DIY的朋友们在攒完一台新电脑后,立即运行一遍HCT中的System test(系统测试),你的新机好坏就一目了然了。

     下面我们就细说一下HCT这个测试工具集。HCT针对测试对象可分为两大类,系统测试和部件测试,系统测试又分为台式机,笔记本和服务器的测试,部件测试则分为声卡、网络设备、打印机、扫描仪等图形图像设备等。HCT测试是十分全面的,即使硬件设备不再以上分类中,那么仍可归类为Unclassified Device,即“未归类设备”。显示卡的测试是个例外,它作为单独的测试工具集DCT并不包含在HCT工具集中,需要单独下载,当前最新的DCT5.3版本,需要在微软网站上单独下载。

     从测试机理来说,HCT包括几个方面的测试,首先是总线方面的测试。计算机内外部件从系统架构上来看都是从属于几个总线上的,如PCI总线、USB总线或1394总线。HCT中就包括对这些总线有关的测试,如针对PCI设备就会有PCI Compliance Test,来检测这个被测硬件是否严格符合PCI规范的各种电气方面和功能方面的要求。如USB设备则有USB Address Descrīption TestUSB Device Framework(CV)等等。

    再一类是驱动程序开发有关的测试,如ChkINF测试来检查驱动程序安装配置文件inf文件是否符合标准要求,对于想取得数字签名的驱动程序,该Inf文件必须包含一行catalogfile=xxx.cat,这是指出应有一个数字签名文件与这个驱动程序对应,因为这个cat文件来自微软公司,所以在HCT测试时还没有这个文件,但也要保留这样一行,因为如果一旦获得了数字签名文件,那么经过测试的这些文件就都不能有任何更改了,包括inf文件,所以一定要在取得数字签名文件前就在inf文件中增加这样一行。

    另一类是有关功能方面的测试,如打印机测试会包括打印各种文本、图形图像的测试,Modem测试会包括传真和各种数据传送等与该设备功能有关的测试。

    还有一类是ACPI有关的测试。ACPIAdvanced 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标志。驱动程序的数字签名给硬件厂商带来了挑战,却为最终用户带来了实惠。

     

  • WHQL测试整体流程

    2007-10-14 21:38:45

    WHQL流程--From 微软硬件创新中心


    WHQL流程
    更新日期: 2007.8.31
    --------------------------------------------------------------------------------
    获得Windows徽标的优势

    获取Windows徽标不仅保证用户更好地得到Windows应用体验,获得Windows徽标对于制造商来说具有很多优势:

        被授权在硬件产品上和该产品的包装上使用Windows徽标,获得微软Windows品牌及用户对产品与Windows兼容认可的优势。
        选择在全球Windows Marketplace以及硬件兼容性列表HCL列入产品。政府机关,大公司的IT管理部门和教育机构在购买硬件产品之前,常常会优先考虑该列表中的产品。
        获得硬件驱动程序的数字签名。表示该驱动程序已经通过了Windows兼容性检测,这是个高质量的驱动程序。这样也可以减少产品召回,降低售后服务成本。
        通过Windows更新发布经过数字签名的驱动程序,因此客户会很容易得到最新的更新。
        访问Windows错误报告服务,使用微软联机崩溃分析(OCA)技术,从用户返回的出错数据中定位问题,保证硬件产品和驱动程序在整个生命周期中的质量。

    行为推荐
        确认您的硬件产品归属的Windows徽标系统或设备分类。
        详细阅读Windows徽标计划要求文档,DTM工具中的测试基于这些要求。
        用最新的DTM工具进行产品测试
        提交测试结果到Winqual网站
        使用Windows错误报告跟踪产品及设备驱动程序的售后运行质量。
        在你的设计过程中尽早考虑Windows徽标技术要求
        将WHQL认证融入您产品的研发流程中

    启动WHQL认证
        建立Winqual网站的在线账户
        从Microsoft Connect网站获得最新测试工具WLK1.0.c。
        使用DTM工具完成WHQL测试
        在Winqual网站提交测试结果和驱动程序
        取得Windows徽标使用资格以及下载驱动程序数字签名

    WHQL支持信息与技术合作
        WHQL支持信息与DTM支持信息
        微软中国硬件创新中心提供的免费WHQL技术合作

    建立Winqual网站的在线账户

    提交的所有硬件分类的驱动程序和系统都通过Windows徽标计划资格认证服务(Winqual)网站完成。申请WHQL认证要获得Winqual网站的账号。Windows Logo计划资格认证服务——Winqual网站:
    https://winqual.microsoft.com
    Winqual网站帮助信息:
    https://winqual.microsoft.com/help

        申请公司帐号
    建立一个Winqual在线账户的过程见:
    https://winqual.microsoft.com/SignUp/

    流程中需要从Verisign网站上获取一个VeriSign Class 3 Code signature ID
    http://www.verisign.com/products/winlogo/
    Verisign是一家独立的网上信息安全认证提供商。Verisign在中国的代理公司是天威诚信公司。天威诚信公司网址:
    http://www.itrus.com.cn

        设置帐号权限
    申请Winqual帐号时,首先获得2个管理员权限的帐号。管理员有权在贵公司范围内新增帐号,并为这些帐号授予提交测试结果、签署法律协议、下载数字签名等不同行为的权限。

        签署法律协议
    获取Winqual帐号后,必须签署相关的法律协议后才能进行在线提交。这些协议必须由您所在公司的至少总监级人员在线签署。大部分的合同是“庇护”合同。主协议一旦签订,为了保护每个独立产品提交的细节信息,"Exhibit"补充合同还必须每次提交。

    从Microsoft Connect网站获得最新测试工具
        选择可供参与的计划
    打开http://connect.microsoft.com,使用您的Windows Live™ ID登陆,选择左侧“可供参与的计划”,在列表里选择Microsoft Windows Driver Kit (WDK) and Windows Logo Kit (WLK)。
    参与Microsoft Windows Driver Kit (WDK) and Windows Logo Kit (WLK)计划后,您就可以下载WLK工具。

        下载WLK工具
    打开右侧“我的参与”,点击左侧“下载”选项,在下载列表中找到Windows Logo Kit 1_0_c。DTM测试工具包含在Windows Logo Kit (WLK)里,目前的最新版本是WLK1.0.c

    使用DTM工具完成WHQL测试

        DTM测试环境准备
    阅读DTM联机文档,了解DTM工具的软件和硬件要求,以及测试人员所需知识,每个提交分类的准备过程。
    正确按照配置DTM测试环境。
    在DTM的菜单Explorer -> Job Monitor中创建该测试的Machine Pool,并按照分类设置MCU Policy
    DTM工具包括侦测软件,因此在安装工具之前,必须在测试前配置好所有的硬件。
    详细阅读DTM测试工具文档

        运行选定分类下的所有测试项
    在菜单Explorer -> Device Console中,创建新的Submission时,选择适合的硬件分类和测试平台。运行选定分类下的所有测试项
    在菜单Explorer -> Job Monitor中管理和查看DTM测试进程,完成所有测试。如遇失败测试项,必须重新测试直至通过为止。

        检查测试日志
    检查由测试生成的测试日志和留意所有的失败点。反复核对列在https://winqual.microsoft.com/ec网站的勘误表中的每个错误。勘误表中描述了已知错误解决方案和指明什么样的错误在提交中可以接受。您也可以登录https://winqual.microsfot.com 后下在勘误表过滤器并将其合并到DTM Controller中以自动滤除相关的Errata。
    •如果你的错误在勘误表中,但没有被勘误表过滤器自动滤除,请您从http://www.microsoft.com/whdc/whql/WHQLdwn.mspx网站下载WHQL Readme文档模板,完整填写这个表格,并与你的测试提交一起返回WHQL。
    •如果你的错误没有覆盖在勘误表中,关于测试原因的更多信息在DTM工具文档中的测试规范中。你可以使用他们更正错误以便通过测试。
    http://www.microsoft.com/whdc/whql/WHQLdwn.mspx 网站下载DTM Log Viewer工具将有助于查看和分析DTM测试结果。

    在Winqual网站提交测试结果和驱动程序

    WHQL对每种类型的提交有文档记录他们的日志审查过程并提供DTM提交过程工具帮助你在向Winqual网站上传日志文件以前预测你的提交是否通过。另外,也包括提交过程程序,来检查那些测试日志中可以导致提交失败的问题。

    DTM提交过程工具和提交过程程序都可以从Winqual网站下载。

        为提交准备测试日志
    按照DTM工具测试过程中的向WHQL提交测试日志包的说明规定。测试结果将被压缩为一个CPK文件。
    保证所有的测试日志中的错误被勘误表覆盖并且以前面所描述的Readme文档形式记录下来。如果在测试审核中存在未记录的错误,提交是不会成功的。
    将上述两个文件放置在一个文件夹中。
    除此之外,如果您的提交需要包括驱动程序,请将驱动程序放置在另外一个文件夹中。并将该驱动程序相对应的符号文件(pdb文件)放置在第三个文件夹中。
    以上3个文件夹的名称可以任意指定。

        提交测试结果
    所有的Windows徽标计划提交通过Winqual网站完成。在你的测试完成以后,你可以签约并上传你的测试结果。

        法律协议
    在提交测试日志以前,你所在公司必须具备一份以签署的WHQL测试协议和驱动发布协议的文件拷贝。
    每个产品的提交必须在线签署Exhibit A(来自WHQL测试协议)。
    如果你想拥有Windows徽标的使用权,你必须运行产品列表工具,并对每次提交点击“接受”Exhibit3徽标许可协议。

        提交费用
    不同类型内容的提交费用已列在WHQL网站上。在线提交过程中,你将被要求提供你所在公司或部门的帐户地址。在每个季度结束时,WHQL将根据这个季度所有的提交给你所在的公司开具账单。如果你所在的公司的发票需要订单号码,请你务必在在线提交过程中输入PO number。


    成功的徽标测试提交之后

        审核时间
    目前从提交开始到最后确认的平均在线提交时间少于20个小时。WHQL会继续努力维持或减小当前的平均时间。

        管理提交
    每次新的提交或更新将对应于唯一的提交ID号。你的管理员或联系人用这个登录ID号来跟踪每次提交的过程。

        E-mail消息
    在提交过程中每个重要的阶段,Winqual会用e-mail方式发消息给所有提交过程中列出的联系人。

        审核提交,生成测试报告
    WHQL工作人员将审核和确认收到的测试日志,并生成一份测试报告。当审核完成后,WHQL会向提交者和指定的联系人发电子邮件,以通知他们审核的结果。

        徽标图案
    如果成功通过审核,你可以登录Winqual网站,运行产品列表工具,签署Exhibit3徽标许可协议。当完成这些步骤后,就可以下载Windows徽标图案。

        Windows Marketplace和HCL列表
    在提交过程中,你有机会指定产品在Windows Marketplace和HCL网站上的发布日期。如果你提交成功并且符合其他所有要求,WHQL会在指定的日期起在网站上列出该产品。如果提交过程中没有输入发布日期,则产品不会被列出。
    Windows Marketplace和HCL网站:
    http://www.windowsmarketplace.com
    https://winqual.microsoft.com/hcl

    注意:所有获得Windows徽标的产品都会在HCL网站中列出,但您可以自行决定是否将产品显示在http://www.windowsmarketplace.com中,请登录Windows Markeplace工具网站:
    http://tools.windowsmarketplace.com/getlisted/

        添加到Windows更新
    如果在提交过程中提出申请,并且你的产品满足Windows更新标准,WHQL将把你产品的签名驱动放入Windows更新网站,以便用户下载。Windows Update网站:
    http://windowsupdate.microsoft.com/
    使用驱动分发中心向Windows更新中添加驱动程序和更新规则。
    http://www.microsoft.com/whdc/maintain/DrvUpdate.mspx

        使用Windows错误报告服务
    Windows错误报告服务是微软提供的一项免费服务。你可以利用这项服务获取最终用户通过微软OCA技术反馈的错误数据,从动态的数据中掌握您产品在整个生命周期中的质量情况。关于Windows错误报告服务,请参考:
    http://www.microsoft.com/whdc/maintain/StartWER.mspx

    联系WHQL寻求帮助

    如果你在测试过程中或阅读测试日志时有任何的问题,你可以联系WHQL工作人员寻求帮助。

        WHQL问题解答
    系统相关问题 whqlsys@microsoft.com
    设备相关问题 whqldt@microsoft.com

        微软中国提供的DTM技术支持:
    微软中国为客户提供付费的DTM技术支持服务。我们通过“专业技术支持”和“高级服务”两种方式对WHQL(包含DTM)和WDK进行技术支持。
    a. 专业技术支持和高级服务都可以提供完整的WHQL支持。
    b. 面向专业客户,我们提供完整的WHQL支持和基本的WDK支持。
    c. 面向高级客户,我们提供完整的WHQL支持和完整的WDK支持。
    d. 专业技术支持和高级服务的主要区别在于WDK部分的技术支持。专业技术支持仅提供一般性指导并且我们不审核、修改、调试客户代码,也不调试客户的设备。高级服务包含对客户代码提出直接的建议和在必要时直接调试客户的代码和设备。

        创建支持事件的方法:
    您可以通过发送E-mail或拨打服务热线800-820-3800 (中文客户)联络微软中国技术服务来开启一个新的支持事件。但是在与我们的WHQL/WDK工程师合作前,您必须与微软技术服务部门签订一份技术支持协议,来明确技术支持的范围和服务内容。我们仅通过“专业技术支持”和“高级服务”这两种方式向付费客户提供WHQL/WDK技术服务。
    如果您需要了解更多关于微软技术服务的信息,请浏览http://support.microsoft.com/gp/assistsupport/zh-cn。该网站提供微软所有产品的支持(中文)。

        微软技术与支持部门的联系方法:
    请拨打电话800-820-3800 或者+86 (21) 9608-1318,接通后拨“3”选择产品售后服务,然后拨“1”选择企业服务或拨“2”选择专业服务,来联系付费技术支持服务的签约事宜 。了解详细的专业支持、合同和价格信息,可访问http://support.microsoft.com/gp/profsupport/zh-cn(中文)。

        行政支持
    发送与WHQL测试计划相关的行政问题到以下的e-mail地址:
    发票索取whqlbill@microsoft.com Subject=Invoicerequest
    法律协议问题 whqlegal@microsoft.com
    提交状态查询 Winqual@microsoft.com Subject=Statusrequest
    关于在线提交Winqual@microsoft.com
    信息反馈whqlfb@microsoft.com Subject=Feedback

    微软中国硬件创新中心关于WHQL的技术合作

    针对国内很多厂商WHQL测试的需求,微软硬件创新中心(HIC)提供面向国内厂商的WHQL技术合作,具体内容清参看下面内容。

        合作内容
    在技术合作期间,HIC为合作伙伴提供WHQL流程、WHQL测试方法的培训。合作伙伴可以利用HIC提供的独立WHQL实验室进行自身产品的WHQL测试。该实验室在技术合作期间将为合作伙伴提供一个WHQL测试的标准软硬件环境。并且,HIC工程师将提供现场的有限技术支持以解决测试中遇到的有关问题。在过去的几年里,HIC已同国内几十家客户完成了上百次成功的WHQL技术合作,这些厂家的多款产品都获得了Windows徽标,驱动程序得到了数字签名。

        认证与授权
    HIC可以对WHQL测试结果进行分析,但具体的WHQL认证和徽标授权,需要通过标准WHQL流程提交至美国WHQL来完成。HIC仅针对的是技术上的支持与合作。

        收费
    HIC的技术合作是根据自身运行的项目和目标进行, HIC针对于WHQL的技术合作目前免费,但对于申请进行技术合作的厂家和合作内容,需要经过HIC审批。WHQL认证提交费用,依照WHQL标准流程向微软美国支付。

        申请流程
    您需要先提交申请表格,一般需要在技术合作前至少2周进行。通常需要进行一次电话会议以便双方共同了解具体的测试内容和设备,以便进行相应的准备和形成技术合作的文档。
    根据具体问题和测试设备的不同,可能合作的周期也不同,一般会在1-2周内完成,同时双方都会指派工程师在合作期间一同工作。

        保密协议
    我们需要签署NDA,就是微软的保密协议,保证在微软公司内部进行项目合作的期间,能够保证微软相应产品和信息的安全性等内容。同时在项目合作前,需确定合作内容—项目合作单,这2份文档会在双方电话会议中确定内容,并在项目开始前寄至贵公司。

        中文版WHQL与Logo新闻
    您可以通过订阅WHQL & Logo 新闻来获取关于 WHQL 硬件测试与提交及 Windows 徽标认证的最新信息。若订阅中文版的 WHQL & Logo 新闻,请来信至HICWHQL9@microsoft.com信箱。

        HIC联系方式
    如有任何问题,请随时联系HICWHQL@microsoft.com

    微软中国硬件创新中心
  • 编译原理

    2007-10-14 11:02:50

    编译程序的逻辑结构:

    词法分析:我们的源程序可以看作是一个多行的字符串,这个阶段主要工作是把这些字符串断开成为一个个符合语言意义的词,如 int,i,=。概念好多,主要是文法 G= (VT,VN S, P ),然后生成有限自动机:

    语法分析:主要是为源程序做语法检查,过程就是分析单词串是否构成短语和句子。明白下个图就可以了

    语义分析和中间代码生成:最广泛的静态语义分析方法是语法制导翻译。常用的中间代码有后缀式(逆波兰式)、三元式、四元式和树形等形式。解释器通常用后缀式,编译器则通常用四元式。

    中间代码优化:有局部优化、循环优化和全局优化。主要方法有代码外提、强度削弱、删除归纳变量等。

    目标代码生成:针对具体设备进行汇编优化等。

     

  • WHQL测试(5)_MSDC

    2007-05-17 13:56:55

    Storage Testing Removable Media Testing MSDC

     

    由于被测打印机支持SD\xD\miniSD等存储卡设备,因此需要进行该类存储设备进行测试,该项测试主要通过DTM对可以动存储设备的全部功能进行测试,为确保全部功能的正确,需要运行DTM中定义的全部测试。

     

         Media Lock Test

    TypeManual Test

    测试描述:该测试验证一个以动存储设备是否支持media lock命令。通过使用保护/允许设备移除命令对设备进行写保护开关,进而验证是否设备被lock,该测试需要用户手工干预客户端。

       客户端

       a 运行该项测试 

     

     

      b 提示需要一个待测存储设备,并提示测试会重写一些数据。

      

      c 需要手动将media从设备中移出,然后点击ok

     

      d 点击Ok键后,将media重新插入设备。(此时系统会对media重新写入数据)

     

      e 询问该设备是否有前面板按钮可将media直接弹出。

     

     

  • [论坛] 硬件知识_Direct X

    2007-05-05 23:19:29

    什么是 DirectX?
    Windows 支持 DirectX 8.1,它能提高计算机的多媒体性能。使用 DirectX 可以访问显卡与声卡的性能,从而使程序提供逼真的三维 (3D) 图形与令人如醉如痴的音乐与声音效果。DirectX 是一组低级“应用程序编程接口 (API)”,可为 Windows 程序提供高性能的硬件加速多媒体支持。
    DirectX 使程序能够轻松确定计算机的硬件性能,然后设置与之匹配的程序参数。该程序使得多媒体软件程序能够在基于 Windows 的具有 DirectX 兼容硬件与驱动程序的计算机上运行,同时可确保多媒体程序能够充分利用高性能硬件。
    DirectX 包含一组 API,通过它能访问高性能硬件的高级功能,如三维图形加速芯片和声卡。这些 API 控制低级功能(其中包括二维 (2D) 图形加速)、支持输入设备(如游戏杆、键盘和鼠标)并控制着混音及声音输出。构成 DirectX 的下列组件支持低级功能:

    Microsoft DirectDraw
    Microsoft DirectDraw API 支持快速访问计算机视频适配器的加速硬件功能。它支持在所有视频适配器上显示图形的标准方法,并且使用加速驱动程序时可以更快更直接地访问。DirectDraw 为程序(如游戏和二维图形程序包)以及 Windows 系统组件(如数字视频编解码器)提供了一种独立于设备之外的方法来访问特定显示设备的功能,而不要求用户提供设备功能的其他信息。
    Microsoft DirectSound
    Microsoft DirectSound API 为程序和音频适配器的混音、声音播放和声音捕获功能之间提供了链接。DirectSound 为多媒体软件程序提供低延迟混合、硬件加速以及直接访问声音设备等功能。维护与现有设备驱动程序的兼容性时提供该功能。
    Microsoft DirectMusic
    Microsoft DirectMusic API 是 DirectX 的交互式音频组件。与捕获和播放数字声音样本的 DirectSound API 不同,DirectMusic 处理数字音频以及基于消息的音乐数据,这些数据是通过声卡或其内置的软件合成器转换成数字音频的。DirectMusic API 支持以“乐器数字界面 (MIDI)”格式进行输入,也支持压缩与未压缩的数字音频格式。DirectMusic 为软件开发人员提供了创建令人陶醉的动态音轨的能力,以响应软件环境中的各种更改,而不只是用户直接输入更改。
    Microsoft DirectInput
    Microsoft DirectInput API 为游戏提供高级输入功能并能处理游戏杆以及包括鼠标、键盘和强力反馈游戏控制器在内的其他相关设备的输入
    Microsoft DirectPlay
    Microsoft DirectPlay API 支持通过调制解调器、Internet 或局域网连接的游戏。DirectPlay 简化了对通信服务的访问,并提供了一种能够使游戏彼此通信的方法而不受协议或联机服务的限制。DirectPlay 提供了多种游说服务,可简化多媒体播放器游戏的初始化,同时还支持可靠的通信协议以确保重要游戏数据在网络上不会丢失。DirectPlay 8.0 的新功能即支持通过网络进行语音通信,从而可大大提高基于多媒体播放器小组的游戏的娱乐性,同时该组件还通过提供与玩游戏的其他人对话的功能而使团体游戏更具魅力。
    Microsoft DirectShow
    Microsoft DirectShow API 提供了可在您的计算机与 Internet 服务器上进行高品质捕获与回放多媒体文件的功能。DirectShow 支持各种音频与视频格式,包括“高级流式格式 (ASF)”、“音频-视频交错 (AVI)”、“数字视频 (DV)”、“动画专家组 (MPEG)”、“MPEG 音频层 3 (MP3)”、“Windows 媒体音频/视频 (WMA/WMV)”以及 WAV 文件。DirectShow 还具有视频捕获、DVD 回放、视频编辑与混合、硬件加速视频解码以及调谐广播模拟与数字电视信号等功能。

    简介:

    DirectX是一种应用程序接口,它可让以windows为平台的游戏或多媒体程序获得更高的执行效率,加强3d图形和声音效果,并提供设计人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低用户安装及设置硬件的复杂度。这样说是不是有点不太明白,其实从字面意义上说,Direct就是直接的意思,而后边的X则代表了很多的意思,从这一点上我们就可以看出DirectX的出现就是为了为众多软件提供直接服务的。
    举个例子吧,骨灰级玩家(玩游戏比较长的)在DOS下玩游戏时,可不想我们现在,安装上就可以玩了,他们往往首先要先设置声卡的品牌和型号,然后还要设置IRQ(中断)、I/O(输入于输出)、DMA(存取模式),如果哪项设置的不对,那么游戏声音就发不出来。这部分的设置不仅让玩家伤透脑筋,而且对游戏开发者来说就更头痛了,因为为了让游戏能够在众多电脑中正确运行,开发者必须在游戏制作之初,便需要把市面上所有声卡硬件数据都收集过来,然后根据不同的 API(应用编程接口)来写不同的驱动程序,这对于游戏制作公司来说,是很难完成的,所以说在当时多媒体游戏很少。微软正是看到了这个问题,为众厂家推出了一个共同的应用程序接口——DirectX,只要这个游戏是依照Directx来开发的,不管你是什么显卡、声卡、统统都能玩,而且还能发挥更佳的效果。当然,前提是你的显卡、声卡的驱动程序也必须支持Directx才行。
    DirectX是由很多API组成的,按照性质分类,可以分为四大部分,显示部分、声音部分、输入部分和网络部分。
    显示部分担任图形处理的关键,分为Direct Draw(DDraw)和Direct 3D(D3D),前者主要负责2D图像加速。它包括很多方面:我们播放mpg、DVD电影、看图、玩小游戏等等都是用的DDraw,你可以把它理解成所有划线的部分都是用的DDraw。后者则主要负责3D效果的显示,比如CS中的场景和人物、FIFA中的人物等等,都是使用了DirectX的Direct 3D。
    声音部分中最主要的API是DirectSound,除了播放声音和处理混音之外,还加强了3d音效,并提供了录音功能。我们前面所举的声卡兼容的例子,就是利用了DirectSound来解决的。
    输入部分Direct Input可以支持很多的游戏输入设备,它能够让这些设备充分发挥最佳状态和全部功能。除了键盘和鼠标之外还可以连接手柄、摇杆、模拟器等。
    网络部分DirectPlay主要就是为了具有网络功能游戏而开发的,提供了多种连接方式,TPC/IP,IPX,Modem,串口等等,让玩家可以用各种连网方式来进行对战,此外也提供网络对话功能及保密措施。
    参考资料:匿名回答,助人为乐!

    如何查看Direct X信息:在运行中输入dxdiag

    如何测试 DirectX 组件:

    测试 DirectX 组件您可以在连接到系统的任何监视器上测试 Microsoft DirectDraw 和 Direct3D。您也可以在每个波形输出设备上测试 DirectSound,在每个音乐端口上测试 DirectMusic。

    测试 DirectX 特性:
    单击适当页中的“测试”按钮。
    阅读出现的任何消息。
    查看或聆听测试。
    运行每个测试,直到出现一条询问测试是否成功的消息。如果回答“否”,那么就不再继续运行测试。
    如果是 DirectMusic,则只有一项测试。对音乐播放状态正常与否感到满意后,单击“确定”。

    您可以为任何可用的服务提供程序进行 Microsoft DirectPlay 功能测试。

    测试 DirectPlay
    在“网络”页上,单击“测试 DirectPlay”。
    在“DirectPlay 测试”对话框中,键入用户名并选择服务提供程序。
    选择“创建新会话”,并单击“确定”。
    如果选择了调制解调器连接,请在“调制解调器连接”对话框中单击“应答”,以便将调制解调器置于自动应答模式。
    现在,请在另一台计算机(可以与第一台计算机建立选定的连接)中运行 Microsoft DirectX 诊断工具。

    单击“测试 DirectPlay”。
    键入一个不同的用户名。
    选择相同的服务提供程序。
    单击“加入现有会话”按钮,然后单击“确定”。
    对于某些类型的连接,您可能需要提供更多信息(例如,电话号码)。对于局域网上的 TCP/IP 连接,可以将文本框保留为空白。

    在“会话列表”中(其中包含您在第一台计算机中创建的会话名称),选择会话名称。
    现在,两台计算机都应该显示聊天对话框。在其中一台计算机上的输入框中键入信息,并单击“发送”。该信息应该出现在两台计算机上的聊天对话框的滚动区域中。


     

  • [论坛] WHQL测试(3)_Print Test

    2007-04-28 17:05:37

    HP printer驱动测试项目已经接近尾声了,通过之前跟有经验的同事的学习,目前我已经独自完成了Printer driver Beta6版本的WHQL测试,是时候对一些重要的测试项进行一下总结了。感觉自己还是学的比较浅,只是对测试项的基本功能和Client端表现有所了解,在测试原理及错误排出等方面还有很多要学习的。只有在以后的项目中不断的积累经验才能有对WHQL测试有更加深入的了解。

    今天先总结几个与打印功能关系最密切的测试项:

    ①Printable Area Test(PA测试)

    该测试对各种纸张类型(例如A4/Letter/Envelope #10)分别打印portrait(纵向)和Landscape(横向)两种测试页。主要是验证各种纸张类型的打印区域的正确性。

    下面是一个A5类型纸张portrait的打印输出:

    下面是一个A6类型纸张Portrait&Landscape的打印输出:

     

    对于一份打印输出,WHQL测试有以下几个测试点:

    a.打印区域测试:整个打印区域的边界由四条彩色线条的线组成,每条线都是由基本颜色组成,首先要确保四条边被完整的打印出来,如果某种相应色彩没有被正常打印出来,说明该色彩对应的墨盒可能有问题。然后要对四边线条距离纸张边距的值进行,看该值在允许误差范围内是否正确。

    b.对角线测试:两条对角线顶点为打印区域矩形的四个顶点,交点为打印区域中心。

    c.在打印区域内的第二个矩阵,该矩阵四边距离物理纸张四边的距离为1inch。

    d.2x2inch矩阵测试:在打印区域内打印一个2x2inch矩阵,该矩阵长宽均为2inch,距离打印区域上边据1inch。

    e.信息内容:在打印区域中心(对角线交点)显示被测纸张尺寸,方向信息。

    f.在测试页下方会显示一些与被测打印机相关的信息:如打印机名称,打印端口,驱动程序信息等内容。

     

    ②Print WinColor Test

    该测试会打印出一张由很多色块组成的测试页,每个色块需要由色度计测量出数值。

    下面是一张WinColor的测试页:

    将色度计测量出的色彩值填入客户端对话框中:

    将该数值与Windows定义的色彩标准进行比较,如果与预期值不符,测试无法通过。

    测试工具名称:GretagMacbeth SpectroScanT

    http://www.colourtools.co.uk/spectroscant.htm

    ③Photo Print Test

    该测试打印五张图片,每张图片以Portrait和Landscape两中方向打印。进而验证打印机对图片的打印是正确的,在方向转换后不会失真,色彩变化无间断等。如果图片无法打印或同一张图片只打印一种方向,都可看作测试失败。

    测试内容:

    封面页

    花的图片:横向纵向两张

    两个小孩图片:横向纵向两张

    牛图片:横向纵向两张

    城市图片:横向纵向两张

    岩石图片:横向纵向两张

     

    4.DocumentProperties Test (ANSI & UniCode)

    文档属性测试用来检测客户端驱动程序属性的API。该测试通过各种规范和不规范的参数调用属性API来检测驱动程序的UI。

    对于每个测试用例,使用过的参数被加载到日志文件中,下面是一个日志文件的例子:

    <StartTest
                    Title="DocumentPropertiesTEST"
                    TUID="" CA="259184628680" LA="259190331028" >
                    <rti id="2701157395" />
                    <ctx id="4071736938" />
    </StartTest>
    <Msg
                    UserText="Testing Parameters permutation:" CA="259184695528" LA="259191739244" >
                    <rti id="2701157395" />
                    <ctx id="4071736938" />
    </Msg>
    <Msg
                    UserText="ParentWindow handle = NULL" CA="259187152000" LA="259197116980" >
                    <rti id="2701157395" />
                    <ctx id="4071736938" />
    </Msg>
    <Msg
                    UserText="PrinterHandle   = 0008B13C" CA="259187274076" LA="259198369668" >
                    <rti id="2701157395" />
                    <ctx id="4071736938" />
    </Msg>
    <Msg
                    UserText="DevName                                         = BadPrinterName" CA="259189194348" LA="259202784116" >
                    <rti id="2701157395" />
                    <ctx id="4071736938" />
    </Msg>
    <Msg
                    UserText="OutDevMode                   = 00000000" CA="259194212632" LA="259205347188" >
                    <rti id="2701157395" />
                    <ctx id="4071736938" />
    </Msg>
    <Msg
                    UserText="InDevMode                      = 0026D838" CA="259194365944" LA="259207533880" >
                    <rti id="2701157395" />
                    <ctx id="4071736938" />
    </Msg>
    <Msg
                    UserText="fMode == 0x5E" CA="259195053008" LA="259208248332" >
                    <rti id="2701157395" />
                    <ctx id="4071736938" />
    </Msg>
    <Msg
                    UserText="DM_COPY | DM_PROMPT | DM_MODIFY | DM_ADVANCED | DM_USER_DEFAULT" CA="259199944896" LA="259209030276" >
                    <rti id="2701157395" />
                    <ctx id="4071736938" />
    </Msg>
    <Msg
                    UserText="Checking return from DocumentProperties():" CA="259578756012" LA="259579142928" >
                    <rti id="2701157395" />
                    <ctx id="4071736938" />
    </Msg>
    <Msg
                    UserText="No Errors found" CA="259581819836" LA="259585130656" >
                    <rti id="2701157395" />
                    <ctx id="4071736938" />
    </Msg>
    <EndTest
                    Title="DocumentPropertiesTEST"
                    TUID=""
                    Result="Pass"
                    Repro="SUCCESS: Variation: 0" CA="259582037324" LA="259586679184" >
                    <rti id="2701157395" />
                    <ctx id="4071736938" />
    </EndTest>
    如果日志文件不包含failure项,则测试通过。
    如果有一项或多项测试结果失败,则该项测试失败。
     
    客户端:
    该测试会多次调用被测驱动程序的UI接口:
    语法命令:
     命令选项  描述
     /p=<Printer Name>  被测打印机名称
     /l=<Log File Name>  日志文件名
     /s=<Server Name>  打印服务器名称
     /umdh  在memory leak detection下运行
     /r=<Number>  测试运行的次数
     

    5.Print Processor API Test:

     

    该测试会调用指定的终端打印处理器进而验证所有的请求是有效的。该测试调用六项测试验证验证处理器API能否对请求作正确处理。

       测试内容:

    • OpenPrintProcessor

    • ClosePrintProcessor

    • ControlPrintProcessor

    • EnumPrintProcessorDatatypesW

    • PrintDocumentOnPrintProcessor

    • GetPrintProcessorCapabilities

    如果有一项测试不能被待测终端正确响应,将会纪录测试失败。由于打印机处理器包含多种的功能,因此该项测试不可能涵盖Processor的全部功能,因此建议增加手工测试以确保全部的功能得到验证。

    通过标准:结果中不包含failure纪录。

    失败标准:如果测试结果中有一项或多项为通过测试的子项,则测试失败。

  • [论坛] WHQL测试(2)_测试环境搭建

    2007-04-26 21:14:52

    在进行WHQL测试前需要配置测试环境,由于我们在测试中使用的测试工具为DTM,因此先要对DTM工具进行了解,DTM可分为三层逻辑结构:DTM clients/DTM controllers/DTM Studio.

    DTM clients端是由不同配置的测试机组成,每台测试机模拟一种实际操作环境,被测试的驱动程序在每台测试机上运行。

    DTM controllers端DTM clients端运行的的测试进行控制,测试的结果会存储在controllers端的SQL数据库中。

    DTM Stadio提供了用户接口,测试者可以在stadio端创建测试场景和分配运行时间。

    基于以上结构,我进行一下的环境设置:

    PC1:

    OS:Server2003/IP:192.168.1.1/User name:administrator/安装DTM Stadio&DTM controllers 

    PC2:

    OS:XP32/IP:192.168.1.11/User name:WHQL_XP32/安装DTM clients&appverify

    PC3:

    OS:XP64/IP:192.168.1.12/User name:WHQL_XP64/安装DTM clients&appverify

    PC4:

    OS:Vista32/IP:192.168.1.13/User name:WHQL_Vista32/安装DTM clients&appverify

    PC5:

    OS:Vista64/IP:192.168.1.14/User name:WHQL_Vista64/安装DTM clients&appverify

    使用HUB将五台机器组成局域网。四台客户端机器分别连接被测打印机,用于测试。(打印机不可直接连接client端USB端口,需要使用USB HUB级联)

    具体安装及操作步骤如下:

    Controller & Studio:

    1.      Install ENU Server2003 Enterprise 32bit.

    2.      Install Server 2003 Service pack 1.

    3.      Install the devices drivers and make sure there is no question mark or exclamatory mark in the device manager.

    4.      Install Microsoft .NET Framework 2.0.

    5.      Install Microsoft SQL Desktop Engine.

    6.      Install WDK Driver Test Manager (DTM) Controller build 6000.

    7.      Install the DTM Studio.(访问//192.168.1.1安装Studio)

     

    Client:

    Install the DTM Client.(访问//192.168.1.1安装Client),安装被测打印机的驱动程序。

     

    下面以打印机driver的WHQL为例讲解如何建立submission:

    1.      Open the job monitor add a new machine pool and drag the Vista32 client into

    this machine pool.

    2。   At the properties at this machine pool, MCU Policy sheet, add the Wdk\ConfigurePrinting policy.

    3    The client passes the Printing Master Config Job.

     

    4 Open the device console, create a new submission.

    5       Choose Windows Vista Client.

    6      Choose device submission.

    7 Choose the logo program as Printing.

    8  Choose the qualification level as Premium.

    9  Name the new submission.

    10   Browse the Vista32 client form network and locate the printer inf file.

    11    Choose the printer driver file.

    12        Load it and next.

    至此,全部测试环境搭建完毕,运行submission中全部要求的被测项目。

    看看我搭建的测试环境:

数据统计

  • 访问量: 50369
  • 日志数: 9
  • 建立时间: 2007-04-24
  • 更新时间: 2007-10-14

RSS订阅

Open Toolbar