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(一点十一)是 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 回调和方法的摘要。 在少数情况下,方法的结构成员或参数仅适用于一个框架或其他框架。 本文档介绍相应参考页上的这些差异。