19

When creating a Windows Driver project in Visual Studio 2012, you have many different options to choose from.

There's a page on MSDN that helps you with choosing the correct driver model for your device. It however doesn't clearly explain the exact differences between the WDM, KMDF and UMDF driver types, and when to choose which model.

I'm looking for an explanation on the differences between the WDM, KMDF and UMDF driver models, so it's easy for beginning Windows driver developers to choose the correct model.

4

2 回答 2

25

简而言之:

  • WDM代表 Windows 驱动程序模型。每个内核驱动程序本质上都是一个 WDM 驱动程序。
  • KMDF代表内核模式驱动程序框架。这是一个框架,它封装并隐藏了驱动程序开发人员必须涉及的许多 OS 编程方面,即使它与驱动程序的业务逻辑无关。某些功能在 KMDF 框架中不存在,并且需要在不使用框架的情况下进行本机内核调用(但在大多数情况下并非如此)。
  • UMDF代表用户模式驱动程序框架。它是 KMDF 的补充框架,它们共同构成WDF(Windows 驱动程序框架)。UMDF 允许在用户模式下创建驱动程序,具有用户模式编程与内核模式的所有优点。与 KMDF/WDM 驱动程序相比,UMDF 驱动程序自然有局限性,并且在大多数情况下,它需要至少具有某些功能的内核对应项。

您引用的页面非常全面。您应该深入了解它以进行更深入的了解。

于 2013-05-15T16:01:30.260 回答
12

我喜欢 MSDN 的文章:WDM 和 KMDF 之间的差异

  • WDM是自 pnp 设备驱动程序 (>=Win2k) 以来的驱动程序模型。在此模型中,您必须处理与您的功能无关的功能。Walter Oney(Microsoft Windows 驱动程序模型编程)将这些功能外包给外部设备驱动程序库以供重用。

  • WDF/kmdf试图简化设备驱动程序的开发。可以覆盖函数或使用默认处理程序。内存和队列的管理已大大简化和安全。

  • UMDF尝试在用户模式中使用与内核模式中的函数调用类似的函数调用。

希望不会太晚。我写完后第一次看到的问题日期!

于 2013-11-07T14:31:42.477 回答