加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

三大兵器在手 驱动从此无忧进阶(原著——吕汀栎)

(2010-03-03 15:17:42)
标签:

电脑

inf文件

设备驱动程序

吕汀栎

分类: Windows相关

 

进阶:

-----------------------------------------------------------------------
技术难度:Windows高阶原理
适用人群:Windows高级用户,系统管理员。
适用系统:Microsoft Windows Client

-----------------------------------------------------------------------

 

原理篇:

设备驱动程序(简称:驱动程序、驱动,英文为:device driver)可谓是计算机在操作系统的基础上软硬件交互的桥梁,硬件的软“神经中枢”。设备驱动程序通常为某种设备提供I/O接口。设备驱动程序接收I/O管理器传送供来的指令,并将这些指令翻译成具体的命令,控制它所管理的设备。设备完成这些命令后,再通过驱动程序通知I/O管理器。一般,一个驱动程序只为一种特定的设备提供服务。如显卡驱动程序只负责显卡的工作,令显卡向显示器输出显示信号;声卡驱动程序只负责声卡的功能,提供音频信号的输入,输出。

从Windows操作系统组成的角度,Intel80386开始,出于安全性和稳定性的考虑,该系列的CPU可以运行于ring0~ring3从高到低四个不同的权限级,对数据也提供相应的四个保护级别。运行于较低级别的代码不能随意调用高级别的代码和访问较高级别的数据,而且也只有运行在ring0层的代码可以直接对物理硬件进行访问。由于WindowsNT是一个支持多平台的操作系统,为了与其他平台兼容,它只利用了CPU的两个运行级别。一个被称为内核模式,对应80x86ring0层,是操作系统的核心部分,设备驱动程序就是运行在该模式下;另一个被称为用户模式,对应80x86ring3层,操作系统的用户接口部分(就是我们通常所说的win32 API)以及所有的用户应用程序都运行在该级别。

于是便出现了问题,应用程序工作在用户模式下是无法直接对物理硬件进行访问的,那应用程序如果想对物理硬件进行访问,该如何处理呢?答案就是借助于在内核模式下运行的设备驱动程序。对于用户模式与内核模式是如何交互的问题,以及windows7中可运行于用户模式下的驱动程序问题。超出了我们本次讨论的范畴,我们在此不做讲解。

 

 

文件篇:

明白了原理的同时,我们便明白了驱动程序的重要性。既然驱动程序是如此的重要。我们应该具体怎样去理性的认识驱动程序呢?

任何驱动基本上都包含以下几个文件的:扩展名通常为.SYS.DLL等的驱动程序的主文件;.CAT文件一般是微软对驱动程序的数字签名文件;.inf描述设备安装信息的文件。
 三大兵器在手 <wbr>驱动从此无忧进阶(原著——吕汀栎)



在安装驱动程序时,Windows一般要把驱动程序的主文件复制到C:\WINNT\system32\drivers文件夹里,将.inf文件拷贝一份到“Win-dows\Inf”“Windows\Inf\Other”目录下,以备将来使用。Inf目录下除了有.inf文件外,还有两个特殊文件Drvdata.binDrvidx.bin,以及一些.pnf文件,它们都是Windows为了加快处理速度而自动生成的二进制文件。

延伸:

1,                  .CAT文件:微软对硬件厂商开发的驱动程序进行兼容性、稳定性测试(这个认证是比较严格的),能通过测试的驱动程序被授予数字签名(一个.CAT文件),并颁发Designed for Windows徽标,而且加入HCL列表(Hardware Compability List),将驱动添加进Windows安装光盘的Drivers.CAB文件。

2,                 .inf文件:.inf是从Windows 95时代开始引入的一种描述设备安装信息的文件,它用特定语法的文字来说明要安装的设备类型、生产厂商、型号、要拷贝的文件、拷贝到的目标路径,以及要添加到注册表中的信息。通过读取和解释这些文字,Windows便知道应该如何安装驱动程序。

    可能很多朋友发现,自己下载的驱动程序只是一个安装文件啊,没有上文提到的这几个文件,其实,这几个文件是被打包放在了驱动程序的安装文件里而已,之所以这样做,一是为了压缩体积,二是为了方便用户,驱动程序的安装文件自己进行安装,不需要用户参与具体的驱动程序主文件的复制,inf文件的识别。

 

 

硬件ID篇:

    通常情况下,上文的方法能够解决所有的驱动问题,但是有时候,我们会遇到十八般武艺用全,结果还是没有装上驱动的悲惨境遇,这种情况下,往往就说明了你需要的驱动互联网上确实是没有了,但是,我们的杀手锏还没出呢,出招完毕之后再定自己硬件的生死也未尝不可啊。 

什么是硬件ID?  

    硬件ID是电脑所有硬件的一个编号,所有设备都有如下编号:VEN_XXXX&DEV_XXXX,VEN代表硬件厂商,DEV代表产品编号。USB设备会有如下编号:VID_XXXX&PID_XXXX(XXXX为四位的数字与字母组合),道理跟上面的是一样的VID代表硬件厂商,PID代表产品编号。所有的测试软件都有可能会出错,只有硬件ID是最可靠的。

如何获得硬件ID? 
     Win7\Vista系统的请右键点击“计算机”-“管理”打开“计算机管理”,再点击“设备管理器”。然后查看右边设备列表里的“网络控制器”,双击或者右键打开它的属性。接着切换到“详细信息”这栏,在“属性”这里选择“设备范例ID”就可以看到DEV码了。VEN_和DEV_后面的四位就是了。如图:
 三大兵器在手 <wbr>驱动从此无忧进阶(原著——吕汀栎)


我们便得知我的网卡的设备号为VEN_1317&DEV_0985.

     当然你也可以用上文提到的硬件检测工具EVEREST生成硬件报告,里面也可以找到硬件ID。

     下载完驱动后,我们可以打开驱动文件夹中上文“文件篇”里提到的的.INF文件,从里面我们便可以找到该驱动所有适合硬件的ID,将设备管理器内我们的硬件ID与之对比即可判断驱动是否正确。如图,我的驱动程序.inf的局部截图:
 三大兵器在手 <wbr>驱动从此无忧进阶(原著——吕汀栎)

我顺利找到了我的网卡的硬件ID“VEN_1317&DEV_0985”,这说明这款驱动与我的网卡是完全对应的。从而我们便能够确定这就是我网卡的驱动。

      不要相信万能,要相信硬件ID。
      对照自己的硬件ID便可以从网上精确找到自己的驱动啦。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有