选择驱动程序模型
Microsoft Windows 提供了多种驱动程序模型,你可以使用这些模型编写驱动程序。 选择最佳驱动程序模型的策略取决于要编写的驱动程序类型。 选项如下:
- 设备函数驱动程序
- 设备筛选器驱动程序
- 软件驱动程序
- 文件系统筛选器驱动程序
- 文件系统驱动程序
有关各种类型驱动程序之间差异的介绍,请参阅什么是驱动程序?和设备节点和设备堆栈。 以下部分说明了如何为每种类型的驱动程序选择模型。
为设备函数驱动程序选择驱动程序模型
当你设计一个硬件设备时,首先要考虑的事项之一就是你是否需要编写函数驱动程序。 提出下列问题:
是否可以完全避免编写驱动程序? 如果必须编写函数驱动程序,则最好使用哪个驱动程序模型? 若要回答这些问题,请确定设备的何处可以容纳设备和驱动程序技术中介绍的技术列表。 参阅该特定技术的文档,以确定是否需要编写函数驱动程序以及了解哪些驱动程序模型可供设备使用。
某些个别技术具有微型驱动程序模型。 在微型驱动程序模型中,设备驱动程序由两个部分组成:一个部分处理常规任务,另一部分处理设备特定的任务。 通常,Microsoft 编写通用部分,设备制造商编写设备特定的部分。 设备特定的部分具有多种名称,其中大部分名称都共享前缀“微型”。 以下是微型驱动程序模型中使用的一些名称:
- 显示器微型端口驱动程序
- 音频微型端口驱动程序
- 电池微型类驱动程序
- 蓝牙协议驱动程序
- HID 微型驱动程序
- WIA 微型驱动程序
- NDIS 微型端口驱动程序
- 存储器微型端口驱动程序
- 流微型驱动程序
有关微型驱动程序模型的概述,请参阅微型驱动程序和驱动程序对。
并非设备和驱动程序技术中列出的每项技术都有专用的微型驱动程序模型。 特定技术的文档可能会建议你使用内核模式驱动程序框架 (KMDF);其他技术的文档可能会建议你使用用户模式驱动程序框架 (UMDF)。 关键点是你应从研究特定设备技术的文档开始。 如果你的设备技术具有微型驱动程序模型,则必须使用微型驱动程序模型。 否则,请按照特定于技术的文档中的建议操作,了解如何使用 UMDF、KMDF 还是 Windows 驱动程序模型(WDM)。
为设备筛选器驱动程序选择驱动程序模型
一些驱动程序频繁参与单个 I/O 请求(如从设备读取数据)。 驱动程序在堆栈中进行分层,并且可视化堆栈的常规方法是将第一个驱动程序放在顶部,将最后一个驱动程序放在底部。 堆栈具有一个函数驱动程序并且还可以具有筛选器驱动程序。 有关函数驱动程序和筛选器驱动程序的介绍,请参阅什么是驱动程序?和设备节点和设备堆栈。
如果准备为设备编写筛选器驱动程序,请确定设备在设备和技术中描述的 技术列表中的位置。 查看特定设备技术的文档是否有关于选择筛选器驱动程序模型的任何指南。 如果设备技术的文档不提供本指南,请先考虑使用 UMDF 作为驱动程序模型。 如果筛选器驱动程序需要访问通过 UMDF 不可用的数据结构,请考虑使用 KMDF 作为驱动程序模型。 在极少数情况下,驱动程序需要访问通过 KMDF 不可用的数据结构,请使用 WDM 作为驱动程序模型。
为软件驱动程序选择驱动程序模型
未与设备关联的驱动程序称为 软件驱动程序。 有关软件驱动程序的讨论,请参阅什么是驱动程序? 软件驱动程序很有用,原因是这些驱动程序可以在内核模式下运行,这样为其提供了受保护操作系统数据的访问权限。 有关处理器模式的信息,请参阅用户模式和内核模式。
对于软件驱动程序,可以使用两个选项:KMDF,以及传统的 Windows NT 驱动程序模型。 使用 KMDF 和传统 Windows NT 模型可以编写驱动程序,而无需考虑即插即用 (PnP) 和电源管理。 你可以改为专心于驱动程序的首要任务上。 使用 KMDF 时,无需关注 PnP 和电源,因为框架可处理 PnP 和电源。 使用旧版 Windows NT 模型时,无需担心 PnP 和电源,因为内核模式服务在完全独立于 PnP 和电源管理的环境中运行。
我们的建议是使用 KMDF,尤其是如果你已经熟悉了 KMDF。 如果你希望驱动程序与 PnP 和电源管理完全无关,请使用传统 Windows NT 模型。 如果需要编写知道电源转换或 PnP 事件的软件驱动程序,则无法使用旧版 Windows NT 模型;必须使用 KMDF。
注意:在极少数情况下,需要编写知道 PnP 或电源事件的软件驱动程序,并且驱动程序需要访问通过 KMDF 不可用的数据,必须使用 WDM。
为文件系统驱动程序选择驱动程序模型
有关为文件系统驱动程序选择模型的帮助,请参阅 文件系统驱动程序示例。 请注意,文件系统驱动程序可能比较复杂,并且可能需要了解驱动程序开发的高级概念。
为文件系统筛选器驱动程序选择驱动程序模型
有关为文件系统筛选器驱动程序选择模型的帮助,请参阅“文件系统微过滤驱动程序”和文件系统筛选器驱动程序。
为文件系统微过滤驱动程序选择驱动程序模型
有关为文件系统微过滤驱动程序选择模型的帮助,请参阅文件系统微过滤驱动程序。