读书频道 > 系统 > windows > Windows内核原理与实现
6.3.2 Windows中驱动程序的即插即用支持
2013-05-20 08:06:19     我来说两句 
收藏    我要投稿   

本文所属图书 > Windows内核原理与实现

本书从操作系统原理的角度,详细解析了Windows如何实现现代操作系统的各个关键部件,包括进程、线程、物理内存和虚拟内存的管理,Windows中的同步和并发性支持,以及Windows的I/O模型。在介绍这些关键部件时,本...  立即去当当网订购

在Windows 中,对硬件设备的操纵是通过设备驱动程序来实现的,而设备的即插即用支持则是由驱动程序对象的AddDevice 成员和MajorFunction[IRP_MJ_PNP]分发例程(参见6.2.2节关于驱动程序对象DRIVER_OBJECT 结构的说明)来完成。即插即用管理器通过这两个例程发出各种命令,指示驱动程序控制设备或询问设备的状态。即插即用管理器的命令和硬件设备的状态实际上构成了一个有限状态机,其状态转移如图6.8所示。


 

为了指示设备进行状态转移,即插即用管理器向设备发送 I/O 请求,该 I/O 请求的主功能(major function )码为IRP_MJ_PNP ,次功能(minor function)码为图6.8中所示的IRP_MN_< XXX > 。I/O 管理器将该 I/O 请求分发给驱动程序登记的MajorFunction [IRP_MJ_PNP] 例程,在此例程中,驱动程序根据次功能码即可获知即插即用管理器发送的命令,因而,它可以根据设备当前的状态进行处理。从图中可以看出,当即插即用管理器要停止一个设备时,它首先通过发送IRP_MN_QUERY_STOP_DEVICE 命令,询问驱动程序是否可以停止该设备,如果驱动程序同意此请求,那么,即插即用管理器再发送一个IRP_MN_STOP_DEVICE 命令,让驱动程序停止该设备。移除设备的操作也会经历类似的过程,这里不再重复。

关于功能型设备的状态转移过程,有两点值得说明:

1.  除了突然移除或者设备故障的情形以外,设备的停止或移除是一个温和的协商过程,即插即用管理器在接收到用户的停止或移除设备的请求(在Windows 中,这是通过一个设备管理用户界面程序来做到的)时,会询问驱动程序,让驱动程序有机会完成一些正在等待或尚未完结的I/O 任务。驱动程序也可以拒绝即插即用管理器的请求,比如,当前还有其他的客户程序正在使用它的设备。

2.  当即插即用管理器需要重新分配一个设备的资源时,它可以按照图中的路径让驱动程序停止该设备,然后,对设备重新配置资源,再向驱动程序发送一个 IRP_MN_ START_DEVICE 命令,该命令包含了即插即用管理器的资源分配方案,因而驱动程序可以指示设备在新的I/O 资源条件下继续工作。

除了图6.8 中显示的IRP_MN_XXX 命令,即插即用管理器通过MajorFunction[IRP_ MJ_PNP] 例程发送给驱动程序的实际命令还有很多,请参考base\ntos\inc\io.h 文件中的156~182 行。实际上,从这些命令也可以看出即插即用管理器与设备打交道的协议。值得一提的是,这组命令不仅适用于功能型设备,也适用于总线设备。在一个支持即插即用的设备驱动程序中,MajorFunction[IRP_MJ_PNP]例程往往是一个典型的状态机实现,它根据接收到的IRP_MN_XXX 命令来改变设备的状态。然而,为状态机选择支持哪些命令和哪些状态,则可能随着设备的不同而有所不同。

设备驱动程序的另一个成员AddDevice 例程是即插即用管理器在接收到总线驱动程序提供的设备描述以后,针对总线上检测到的每个设备而调用的。典型的情形是,当系统引导时,即插即用管理器必须列举(enumerate)出当前系统中所有的硬件设备,为此,它请求总线驱动程序提供有关硬件设备的信息,包括硬件设备的资源要求,然后,即插即用管理器加载这些设备的驱动程序,并调用相应的 AddDevice 例程。下一小节我们讨论此设备列举过程,以及在此过程中建立起来的设备树。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:6.3.1 即插即用的基本要求
下一篇:6.3.3 设备列举与设备树
相关文章
图文推荐
3.4.4 进程生命期管
3.4.2 Windows应用商
3.4.1 Windows应用商
3.4 进程生命期管理
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站