驱动程序的分类

来源:互联网 发布:淘宝网电话机 编辑:程序博客网 时间:2024/05/01 09:28

    自学驱动程序,很辛苦,不是看不懂,而是苦于无门可入。看了一些资料,总结了一些驱动的类型,希望对其他人有点作用,不期望起多大的作用,只要不误人子弟就行!

1. 虚拟设备驱动程序VxD

VxD,虚拟设备驱动程序,Win9X下的一种驱动程序类型。其中x代表虚拟设备的名字,如VKD代表虚拟键盘设备。VxD本身是运行在Ring0级的32位的可执行程序,它是Windows应用程序和实际硬件之间的接口,也是操作系统管理资源的接口,主要完成对设备的虚拟化功能。

VxD的一个重要用途就是可以实现物理设备的虚拟化,让多个线程可以访问实际硬件,但是不要认为VxD必须和实际硬件连接在一起的,更确切的说,可以把VxD看做是一个运行在Ring0级的DLL,任何想在Ring0级完成的工作,都可以编写VxD驱动来实现。

注意:

(1)           设备驱动程序VxDWindows9X系统特有的驱动程序模型,它不适合WindowsNTWindows2000系统,因此,不能将驱动程序进行平台移植。

(2)           VxD程序是运行在Ring0层上的特权级别的程序,可以对系统做任何事情,一个恶意的VxD程序可以破坏掉这个系统,而对于这种恶意的VxD,系统没有任何保护措施。

(3)           通常情况下,在使用VxD的时候,一定要三思,看是不是必须采用VxD的方法,如果没有其他Ring3层的方法,再去使用VxD方法;

 

2. NT操作系统驱动程序

         NT操作系统驱动程序根据是否直接操作硬件可以分为两类:用户模式驱动程序和核心模式驱动程序。

(1)       用户模式驱动程序

用户模式驱动程序是在系统的用户态模式下工作,往往是针对于一个特定的环境子系统而言的。这种驱动程序为这个环境子系统中的应用程序提供服务支持,通常是为标准核心驱动程序提供子系统专用接口。

(2)       核心模式驱动程序

核心模式驱动程序就是通常意义上所说的驱动程序,包括用于驱动外部设备的设备驱动程序。核心模式驱动程序与用户模式驱动程序不同,运行在核心层上,可看做是I/O管理器的一部分。I/O管理器可以访问和支持核心驱动程序,应用程序通过Win32函数creatfile()等I/O系统服务而产生一个结果,将此请求发送到I/O管理器。

NT系统中的核心驱动程序采用分层模型,层次由高到低为:文件系统驱动程序、中间驱动程序、设备驱动程序、微驱动程序。

A) 文件系统驱动程序FSD

FSD是比较特殊的驱动程序,主要用来维护各种文件系统的磁盘结构,支持实际物理文件系统,如NTFS或者FAT

FSD位于NT驱动程序堆栈中的顶层,它的底层接口是其他驱动程序。FSD不同于设备驱动程序,它不是通过HAL层访问实际硬件。FSD程序也不能通过DDK来开发,需要其他工具开发。

B) 中间驱动程序

NT系统中,允许在文件驱动程序和物理设备驱动程序之间有很多中间驱动程序。中间驱动程序可以用来提供驱动程序的增值功能,如虚拟磁盘、镜像等。

最普通的中间驱动程序是类驱动程序。

C) 设备驱动程序

设备驱动程序就是实际所说的驱动程序,位于驱动程序堆栈的第三层,根据硬件通信协议,直接对硬件进行端口访问、中断响应、DMA传输。

D) 微驱动程序

微驱动程序的任务是提供硬件的实际接口,目的是让设备驱动程序的编写更为方便。

 

3. Windows 驱动模型WDM

         WDMWindows Driver Model的缩写,即Windows 32模式驱动程序模型。这种驱动程序模型可以在Windows98WindowsMEWindows2000下使用。

         WDMMicrosoft全力推出的新驱动程序模式,目的是提供一种灵活的方式简化驱动程序开发,实现对新硬件的即插即用,减少并降低驱动程序开发的数量和复杂性。

         WDM驱动程序可看作是在WindowsNT4.0驱动程序基础上发展起来的驱动程序模型,它和NT驱动程序有很多相似之处。

         WDM驱动程序模型新特点:

(1)       支持即插即用(PnP)和电源管理

(2)       支持WMI

(3)       支持类驱动程序/微驱动程序分层结构

(4)       提供系统总线驱动程序

原创粉丝点击