WDM 驱动程序的类型

有三种类型的 WDM 驱动程序:总线驱动程序、函数驱动程序和筛选器驱动程序。

在此上下文中,总线是其他物理、逻辑或虚拟设备连接到的任何设备;总线包括传统总线(如 SCSI 和 PCI)以及并行端口、串行端口和 i8042 端口。

驱动程序开发人员必须了解不同类型的 WDM 驱动程序并知道自己正在编写哪种类型的驱动程序,这一点非常重要。 例如,驱动程序是否处理每个即插即用 IRP 以及如何处理此类 IRP 取决于所编写的驱动程序的类型(总线驱动程序、函数驱动程序或筛选器驱动程序)。

下图显示了设备的总线驱动程序、函数驱动程序和筛选器驱动程序之间的关系。

演示可能的驱动程序层的图示。

每个设备通常都有针对父 I/O 总线的总线驱动程序、针对设备的函数驱动程序,以及零个或零个以上针对设备的筛选器驱动程序。 需要许多筛选器驱动程序的驱动程序设计不会获得最佳性能。

上图中的驱动程序详述如下:

  1. 总线驱动程序为总线控制器、适配器或桥提供服务。 总线驱动程序是必需的驱动程序;计算机上的每个总线类型都有一个总线驱动程序。 Microsoft 为大多数常见总线提供总线驱动程序。 IHV 和 OEM 可以提供其他总线驱动程序。

  2. 总线筛选器驱动程序通常会将值添加到总线,由 Microsoft 或系统 OEM 提供。 一个总线可以有任意数量的总线筛选器驱动程序。

  3. 底层筛选器驱动程序通常修改设备硬件的行为。 它们是可选的,通常由 IHV 提供。 一个设备可以有任意数量的底层筛选器驱动程序。

  4. 函数驱动程序是设备的主驱动程序。 函数驱动程序通常由设备供应商编写,并且是必需的(除非在原始模式下使用设备)。

  5. 上层筛选器驱动程序通常为设备提供增值功能。 它们是可选的,通常由 IHV 提供。

以下主题详细说明了三种常规类型的 WDM 驱动程序:总线驱动程序、函数驱动程序、筛选器驱动程序。 另外还包括了一个使用示例 USB 驱动程序的 WDM 驱动程序分层的示例。

在本节中