标题: 从驱动编写角度看Windows 系统的层次架构 [打印本页]

作者: jialinx    时间: 2015-9-13 16:50
标题: 从驱动编写角度看Windows 系统的层次架构

Windows 的基本驱动架构
这里是一个基本的Windows 系统的架构,和一般对操作系统的架构的介绍稍微有点不同的是,对于系统底层做了分解。在硬件抽象层(HAL)上的系统核心处,标示了几个核心构件,如文件系统驱动,可输出的驱动例程及核心态的驱动(KMD)。而用户态的驱动程序则划分在应用程序层面。并不是所有的驱动程序都属于系统核心层,这样就可以降低核心崩溃的风险。

用户态驱动和普通的应用程序一样,以普通权限运行,只能通过Windows API进入与底层硬件打交道。而核心态的驱动则是操作系统构成的一部分,系统对其数据不做完整性检查,则可能会导致系统崩溃。并且处于核心态的驱动程序难于调试。
以Xp系统中的打印机驱动程序为例,分为用户界面部分和设备渲染部分。用户界面部分如选择纸张大小,设置是否双面打印等,都是调用一般的Windows API,和普通应用程序一样工作。而对于实际打印机控制的设备渲染部分,则处于核心态工作。用户界面部分通过系统调用的形式对其进行控制(DeviceIoControl?),从而完成打印工作。
注:对于Vista以后的系统,渲染部分也在用户态工作。

驱动的层次结构:









欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1