小默

[zz]设备对象种类

 

一个驱动程序为它所控制的每个设备产生设备对象,设备对象代表驱动程序的设备。从PnP的角度看有三种设备对象:

物理设备对象(PDO---代表一个总线驱动程序的总线上的设备

功能设备对象(FDO---代表一个功能驱动程序的设备

过滤程序设备对象(Filter DO---代表一个过滤器驱动程序的设备

这三种设备对象都是DEVICE_OBJECT类型,但是使用方式不同并有不同的设备扩展。

通过产生一设备对象(IoCreateDevice)并将其附着到设备堆栈(IoAttachDeviceToDevice_Stack),驱动程序将其本身添加到处理设备的I/O驱动程序堆栈,IoAttachDeviceToDeviceStack决定设备堆栈当前的顶层和附着新的设备对象到设备堆栈的顶层。

1.7给出了设备对象的可能种类,该设备对象可附着于设备堆栈里,表示处理一个设备的I/O请求的驱动程序。

这一部分描述了每一类的设备对象并注意到何时产生该类。参看第2章获得关于在必要的PnP驱动程序例程里产生设备对象的细节信息,要获得PnP设备枚举的更多信息,参见第2部分。

开始于图1.7的底部:

总线驱动程序为总线上它所枚举的每个设备产生PDO

当总线驱动程序枚举其设备时,它为每个子设备产生PDO。总线驱动程序枚举一设备为PnP管理器的BusRelations响应一个IRP_MN_QUERY_DEVICE_RELATIONS请求。如果自从最近一次总线驱动程序响应BusRelations的查询关系请求以来(或者这是机器被引导以来第一次查询关系)设备已经添加到总线上,则总线驱动程序为每个子设备产生一个PDO

PDO表示了总线驱动程序的设备,其他内核模式系统组件也和它一样,如电源管理器、PnP管理器和I/O管理器。

一个设备其他的驱动程序附着于PDO顶端的设备对象,但是PDO一直在设备堆栈的底端。

可选择的总线过滤器驱动程序为它们过滤的每个设备产生过滤程序DO

PnP管理器在BusRelations列表里发现一个新设备时,它决定是否有该设备的任何总线过滤器驱动程序。如果是这样的话,对每个这样的驱动程序PnP管理器确保它们被装载(如果需要调用DriverEntry)并调用驱动程序AddDevice例程。如果总线过滤器驱动程序为这个设备过滤操作,过滤器驱动程序产生一个设备对象并附着它到AddDevice例程里的设备堆栈上。如果不止一个总线过滤器驱动程序存在,且与这个设备相关,每个这样的过滤器驱动程序产生并附着于它自己的设备对象。

可选择的,低层过滤器驱动程序为它们过滤的每个设备产生过滤程序DO

如果一可选择的低层过滤器驱动程序由于这个设备的原因而存在,PnP管理器确信在总线驱动程序和任何总线过滤器驱动程序之后装载了这样的驱动程序。PnP管理器调用过滤器驱动程序的AddDevice例程,在它的AddDevice例程里,低层的过滤器驱动程序为设备产生一个过滤程序DO且附着它到设备堆栈里。如果不止一个低层过滤器驱动程序存在,每个这样的驱动程序将产生并附着它自己的过滤程序DO

功能驱动程序为设备产生一个FDO

PnP管理器确信已安装了设备的功能驱动程序并调用功能驱动程序的AddDevice例程,功能驱动程序产生一个FDO并附着它到设备堆栈里。

可选择的,顶层过滤器驱动程序为它们过滤的每个设备产生过滤程序DO

如果任何可选择的,顶层过滤器驱动程序为设备而存在,PnP管理器确信在功能驱动程序调用它们的AddDevice例程之后被安装,每个这样的过滤器驱动程序附着它的设备对象到设备堆栈。

总之,设备堆栈包括每一驱动程序的设备对象,该驱动程序参与了特定设备的I/O处理。父总线驱动程序有一个PDO,功能驱动程序有一个FDO,每一个可选择的过滤器驱动程序有一个过滤程序DO

注意到所有的设备---总线适配器/控制器设备和非总线设备---在它们的设备堆栈里有一个PDOFDO。总线适配器/控制器的PDO由父总线的总线驱动程序产生。例如,如果一个SCSI适配器插入一个PCI总线,PCI总线驱动程序为SCSI适配器产生一个PDO

如果一个设备正以原始模式使用,则没有功能驱动程序或过滤器驱动程序(没有FDO或过滤程序DO)。此时还有父总线驱动程序的一个PDO和零个或更多总线过滤程序DO

要获取哪一个驱动程序例程负责产生和附着设备对象的信息,参看第2章。

设备堆栈和一些额外信息构成了一个devnode设备。在一个设备的devnode里,PnP管理器保留诸如是否设备已经启动和哪一个驱动程序,如有,登记通知设备上的改变。内核调试程序devnode命令显示了关于一个devnode的信息。

posted on 2010-02-03 16:17 小默 阅读(720) 评论(0)  编辑 收藏 引用 所属分类: Windows


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


导航

统计

留言簿(13)

随笔分类(287)

随笔档案(289)

漏洞

搜索

积分与排名

最新评论

阅读排行榜