WDM 驱动程序的类型

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

  • 总线驱动程序驱动单个 I/O 总线设备,并提供与设备无关的每个插槽的功能。 总线驱动程序还会检测和报告连接到总线的子设备。

  • 函数驱动程序驱动单个设备。

  • 筛选器驱动程序筛选设备、设备类或总线的 I/O 请求。

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

对于驱动程序开发人员来说,了解不同类型的 WDM 驱动程序并了解他们正在编写的驱动程序类型非常重要。 例如,驱动程序是否处理每个 即插即用 IRP 以及如何处理此类 IRP 取决于正在写入的驱动程序类型(总线驱动程序、函数驱动程序或筛选器驱动程序)。

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

说明可能的驱动层关系图。

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

上图中的驱动程序是以下类型:

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

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

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

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

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

以下主题详细介绍了三种常规类型的 WDM 驱动程序(总线驱动程序、函数驱动程序、筛选器驱动程序)。 还包括使用示例 USB 驱动程序的 WDM 驱动程序分层示例。

本部分内容

总线驱动程序

函数驱动程序

筛选器驱动程序

WDM 驱动程序层:示例