80楼#
发布于:2002-11-08 12:48
I/O管理器将执行结果返回给用户态程序。但在WDM体系结构中,大部分实行分层处理。即在图
|
|
81楼#
发布于:2002-11-08 12:48
中“设备驱动“这部分,分成了若干层,典型地分成高层驱动程序、中间层驱动程序、底层驱动程序。每层驱动再把I/O请求划分成更简单的请求,以传给更下层的驱动执行。以文件系统驱动为例,最高层驱动只知道文件如何在磁盘上表示,但不知到怎样得到数据。最低层驱动程序只知
|
|
82楼#
发布于:2002-11-08 12:48
道怎样从磁盘取出512B为单的数据块,但不知道文件怎样表示。举个更具体的生活例子。主人(最高层驱动)知道(并且需要)笔计本电脑,但不知道具体放在什么位置;而仆人(最底层驱动)却知道它放在具体什么地方,但
|
|
83楼#
发布于:2002-11-08 12:49
在WDM驱动体系中,驱动尽可能被设计成分层并且通用的。以USB驱动为例,USB总线驱动负责与硬件打交道,但不负责数据的逻辑表示。其它驱动程序只是扮演客户端驱动程序的角色,把各种请求转换成对USB总线驱动程序的请求。比如我们使用的HID驱动中的键盘驱动程序(USB接
|
|
84楼#
发布于:2002-11-08 12:49
口),我们按下键时,它只是简单(当然不是想象的那么简单,只是相对于USB总线驱动而言的)地把它转化为对USB总线驱动程序的请求,然后将USB总线驱动程序得到的结果返回系统中。
|
|
85楼#
发布于:2002-11-08 12:49
还有一类驱动程序就是我们常说的过滤器驱动程序。它不负责完成基本的驱动任务,但它位其它驱动层次之间,并添加一些功能。在设计过程中,有一个原则就是不影响其它层次的功能。常见的例子是防火墙,底层实现其实是一种中间层过滤器驱动程序,负责检查IP包的进出情况,允许合法的包通过,阻止非法的包通过。
|
|
86楼#
发布于:2002-11-08 12:49
最底层的驱动程序在收到IRP后,通过硬件抽象层,然后与硬件发生作用,从而完成I/O请求工作。在这样的架构下,Windows 2000( or NT)上面的层就不需要对应每个操作系统都要开发一遍
|
|
87楼#
发布于:2002-11-08 12:49
了。所以微软认为在Windows2000 x86平台下开发的驱动和其它CPU平台下Windows 2000源码级兼容。(试想一下,如果大家都用c写一个“hello world!”程序,那么只要有c编译器的操作系统平台下,运行的结果都是一致的。)
|
|
88楼#
发布于:2002-11-08 12:50
WDM驱动体系相对于Windows NT的KMD驱动体系不同之处在于它支持即插即用、拥有总线驱动和类驱动等等。WDM驱动体系重新定义驱动程序层次,以便适应即插即用系统。在这时我们引入了”驱动程序栈“的概念。驱动程序栈是WDM驱动体系中驱动层次的有序集合。可以这样理解:
|
|
89楼#
发布于:2002-11-08 12:50
把各层次的驱动程序按一定顺序排列起来,各负责完成一定的功能。具体可以看以下的图示:
从图中我们可以看到,处于最下层的是总线驱动程序,上面是功能驱动程序。在总线驱动程序和 |
|
90楼#
发布于:2002-11-08 12:50
功能驱动程序之间还有可能出现过滤器驱动程序(中间层驱动)。在某些特殊情况下有可能在第一个功能驱动程序层上出现几个另外的功能驱动程序。
|
|
91楼#
发布于:2002-11-08 12:50
总线驱动程序负责列举设备,也就是说,它负责发现总线上的所有设备并检测设备何时添加到总线上或何时从总线上删除。总线驱动程序每发现一个设备就创建一个对应的物理设备对象。一些
|
|
92楼#
发布于:2002-11-08 12:51
总线驱动程序只是简单地控制对总线的访问权。我们知道,一旦拥有总线权时,我们就可以完成我们想做的任何工作。当然,大部分的总线驱动程序为我们完成这类总线上的所有任务。
|
|
93楼#
发布于:2002-11-08 12:51
asmsys别灌了,快去拿分
|
|
|
94楼#
发布于:2002-11-08 12:51
序上面。功能驱动程序负责创建一个功能设备对象。在USB总线情形中,功能驱动程序必须使用总线驱动程序来访问它自己的设备。
|
|
95楼#
发布于:2002-11-08 12:51
在驱动程序栈中,可以插入各种类型的过滤驱动程序。对于总线上的所有设备,总线过滤驱动程序被添加在总线驱动之上;而对于一个特定类的所有功能的功能驱动程序添加类过滤驱动
|
|
96楼#
发布于:2002-11-08 12:51
程序。设备过滤驱动程序仅对特定的设备添加。上层的过滤驱动程序添加在功能驱动程序之上,而低层的过滤驱动程序添加在功能驱动程序下面。
|
|
97楼#
发布于:2002-11-08 12:51
在WDM驱动体系中,为了实现上面所说的分层思想,也为了简化驱动程序的编写,预先提供了几种类驱动程序和总线驱动程序。主要包括如下几类:
|
|
98楼#
发布于:2002-11-08 12:52
人工输入设备类驱动程序提供输入设备的一个抽象接口。实际的输入硬件可以使用不同的方法连接。这些方法被HID类驱动程序隐藏。如果是USB总线的人工输入设备,有可能要调用USB总线驱动程序,但HID类驱动提供给上层的接口是相同的,不因为底层接口的改变而有所不同。
|
|
99楼#
发布于:2002-11-08 12:52
静态图象体系结构(STI)根本上不是一种驱动程序,而是使用小类驱动程序获得扫描仪和静态图象相机图形数据的一种手段。STI目前支持SCSI设备、串行设备、并行设备和USB设备。
|
|