WDM驱动程序,KMDF驱动程序和UMDF驱动程序有什么区别?

时间:2013-05-15 15:45:29

标签: windows wdm kmdf wdf umdf

在Visual Studio 2012中创建Windows驱动程序项目时,您有许多不同的选项可供选择。

page on MSDN可帮助您为设备选择正确的驱动程序模型。但是,它没有清楚地解释WDM,KMDF和UMDF驱动程序类型之间的确切差异,以及何时选择哪种模型。

我正在寻找有关WDM,KMDF和UMDF驱动程序模型之间差异的解释,因此开始Windows驱动程序开发人员很容易选择正确的模型。

2 个答案:

答案 0 :(得分:10)

简而言之:

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

您引用的页面非常全面。你应该深入了解它。

答案 1 :(得分:5)

我喜欢来自MSDN的发言人:Differences Between WDM and KMDF

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

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

  • UMDF 尝试在用户模式下使用类似的函数调用作为内核模式下的函数调用。

希望不会太晚。问题日期在我写完后首次出现!