UMDF 入门

本部分介绍User-Mode驱动程序框架 (UMDF) ,并详细介绍 UMDF 版本 1 和 2 之间的差异。 它还提供有关 UMDF 的高级体系结构信息。 使用此部分可以确定 UMDF 驱动程序是否适合你的需求,并确定要使用的 UMDF 版本。

Windows 驱动程序框架 (WDF) 包含 UMDF,一个用于创建用户模式驱动程序的框架。 与 Kernel-Mode 驱动程序框架 (KMDF) 一样,UMDF 从 WDM 提供抽象层,处理大部分即插即用 (PnP) 和电源管理功能,并允许驱动程序选择特定功能和事件处理。

在Windows 8.1以后,有两个主要版本的 UMDF:版本 1 和 2。 UMDF 版本 1.11 (1.11) 是 UMDF 版本 1 的最新版本,也是 UMDF 2 出现之前的最终版本。 有关显示完整版本信息和操作系统相关性的表,请参阅 UMDF 版本历史记录

使用 UMDF 版本 1 编写驱动程序需要使用 COM 编程模型来编写 C++ 代码。 虽然 UMDF 版本 2 基于与 KMDF 相同的概念驱动程序编程模型,但 UMDF 1 使用不同的组件、设备驱动程序接口 (DDI) 和数据结构来实现模型。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 不会向 UMDF 1 添加任何新功能,并且较新版本的 Windows 10 和 Windows 11 上对 UMDF 1 的支持有限。

相比之下,从 UMDF 版本 2 开始,可以使用 C 编程语言编写 UMDF 驱动程序,该语言调用许多可用于 KMDF 驱动程序的方法。 UMDF 版本 2 和 KMDF 之间共享的所有接口具有相同的名称、参数和结构定义。 如果驱动程序仅使用共享功能,或者围绕仅在一个框架中支持的调用使用条件宏,则可以编写可以使用 UMDF 或 KMDF 编译的单个驱动程序。 有关详细信息,请参阅 如何从 KMDF 驱动程序生成 UMDF 驱动程序

虽然 UMDF 2 和 KMDF 之间存在明显的共性,但仍有少量功能仅在一个框架或另一个框架中可用。 有关详细信息,请参阅 比较 UMDF 2 功能与 KMDF。 有关所有 UMDF 2 和 KMDF 回调和方法的列表,以及它们 () 适用的框架,请参阅 WDF 回调和方法摘要。 在少数情况下,方法的结构成员或参数仅适用于一个框架或另一个框架。 本文档在相应的参考页上介绍了这些差异。