Microsoft Windows 驱动程序有两种基本类型:
用户模式驱动程序 在用户模式下执行,并且它们通常在 Win32 应用程序和内核模式驱动程序/其他操作系统组件之间提供一个接口。
例如,在 Windows Vista 中,所有打印机驱动程序都在用户模式下执行。 有关打印机驱动程序组件的详细信息,请参阅打印简介。
内核模式驱动程序 作为可执行程序的一部分在内核模式下执行,由管理 I/O、即插即用内存、进程和线程、安全性等的内核模式操作系统组件组成。 内核模式驱动程序通常是分层的。 一般而言,较高层的驱动程序通常会从应用程序接收数据、筛选数据,并将其传递给支持设备功能的较低层的驱动程序。
某些内核模式驱动程序也是 WDM 驱动程序 ,这符合 Windows 驱动模型 (WDM)。 所有 WDM 驱动程序都支持即插即用和电源管理。 WDM 驱动程序在 Windows 98/Me 和 Windows 2000 及更高版本操作系统中的源代码都是兼容的(但二进制不兼容)。
像操作系统本身一样,内核模式驱动程序被实现为离散的模块化组件,这些组件具有一组明确定义的必需功能。 所有内核模式驱动程序都提供一组系统定义的标准驱动程序例程。
下图将内核模式驱动程序划分为多个类型。
如图所示,驱动程序堆栈中有三种基本类型的内核模式驱动程序:最上层、中间层和最下层。 每种类型在结构上略有不同,但在功能上差别巨大:
最上层驱动程序 。 最上层驱动程序包括支持文件系统的文件系统驱动程序 (FSD),例如:
NTFS
文件分配表 (FAT)
CD-ROM 文件系统 (CDFS)
最上层驱动程序始终依赖于基础的较低层驱动程序的支持,如中间层功能驱动程序和最低层的硬件总线驱动程序。
中间层驱动程序 ,例如,虚拟磁盘、镜像,或设备类型特定的类驱动程序 。 中间层驱动程序依赖于基础的较低层驱动程序的支持。 中间层驱动程序进一步细分如下:
最下层驱动程序 控制外围设备连接到的 I/O 总线。 最下层驱动程序不依赖于较低层的驱动程序。