Windows 驱动程序的类型

Microsoft Windows 驱动程序有两种基本类型:

  • 用户模式驱动程序 在用户模式下执行,并且它们通常在 Win32 应用程序和内核模式驱动程序/其他操作系统组件之间提供一个接口。

    例如,在 Windows Vista 中,所有打印机驱动程序都在用户模式下执行。 有关打印机驱动程序组件的详细信息,请参阅打印简介

  • 内核模式驱动程序 作为可执行程序的一部分在内核模式下执行,由管理 I/O、即插即用内存、进程和线程、安全性等的内核模式操作系统组件组成。 内核模式驱动程序通常是分层的。 一般而言,较高层的驱动程序通常会从应用程序接收数据、筛选数据,并将其传递给支持设备功能的较低层的驱动程序。

    某些内核模式驱动程序也是 WDM 驱动程序 ,这符合 Windows 驱动模型 (WDM)。 所有 WDM 驱动程序都支持即插即用和电源管理。 WDM 驱动程序在 Windows 98/Me 和 Windows 2000 及更高版本操作系统中的源代码都是兼容的(但二进制不兼容)。

    像操作系统本身一样,内核模式驱动程序被实现为离散的模块化组件,这些组件具有一组明确定义的必需功能。 所有内核模式驱动程序都提供一组系统定义的标准驱动程序例程

下图将内核模式驱动程序划分为多个类型。

阐释内核模式驱动程序类型的关系图。

如图所示,驱动程序堆栈中有三种基本类型的内核模式驱动程序:最上层、中间层和最下层。 每种类型在结构上略有不同,但在功能上差别巨大:

  1. 最上层驱动程序 。 最上层驱动程序包括支持文件系统的文件系统驱动程序 (FSD),例如:

    • NTFS

    • 文件分配表 (FAT)

    • CD-ROM 文件系统 (CDFS)

    最上层驱动程序始终依赖于基础的较低层驱动程序的支持,如中间层功能驱动程序和最低层的硬件总线驱动程序。

  2. 中间层驱动程序 ,例如,虚拟磁盘、镜像,或设备类型特定的类驱动程序 。 中间层驱动程序依赖于基础的较低层驱动程序的支持。 中间层驱动程序进一步细分如下:

    • 功能驱动程序 控制 I/O 总线上的特定外围设备。

    • 筛选器驱动程序 将自身插入到功能驱动程序之上或之下。

    • 软件总线驱动程序 提供一组子设备,较高层的类、函数或筛选器驱动程序也可将其自身附加到这些子设备。

      例如,使用一组板载异类设备控制多功能适配器的驱动程序是软件总线驱动程序。

    • 任何系统提供的类驱动程序 (用于导出系统定义的类/微型类接口)实际上是具有一个或多个链接的微型类驱动程序的中间层驱动程序 (有时称为微型驱动器 )。 每个链接的类/微型驱动器提供的功能与功能驱动程序或软件总线驱动程序提供的功能等效。

  3. 最下层驱动程序 控制外围设备连接到的 I/O 总线。 最下层驱动程序不依赖于较低层的驱动程序。

    • 硬件总线驱动程序是系统提供的,并通常动态控制可配置的 I/O 总线。

      硬件总线驱动程序与即插即用管理器配合使用,可以为所有连接到驱动程序控制的 I/O 总线的子设备配置和重新配置系统硬件资源。 这些硬件资源包括设备内存和中断请求 (IRQ) 的映射。 (硬件总线驱动程序包含了 HAL 组件在 Windows 2000 之前的基于 Windows NT 的操作系统版本中提供的一些功能。)

    • 直接控制物理设备的旧版驱动程序 是最下层驱动程序。