在Visual Studio 2012中创建Windows驱动程序项目时,您有许多不同的选项可供选择。
有page on MSDN可帮助您为设备选择正确的驱动程序模型。但是,它没有清楚地解释WDM,KMDF和UMDF驱动程序类型之间的确切差异,以及何时选择哪种模型。
我正在寻找有关WDM,KMDF和UMDF驱动程序模型之间差异的解释,因此开始Windows驱动程序开发人员很容易选择正确的模型。
答案 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 尝试简化设备驱动程序的开发。可以覆盖函数或使用默认处理程序。内存和队列的管理已经大大简化和保护。
希望不会太晚。问题日期在我写完后首次出现!