APP下载

微软开源驱动程式模组框架DMF,驱动程式开发更快更好维护

消息来源:baojiabao.com 作者: 发布时间:2024-05-21

报价宝综合消息微软开源驱动程式模组框架DMF,驱动程式开发更快更好维护

微软装置团队为Windows驱动程式开发人员释出,开源驱动程式模组框架(Driver Module Framework,DMF),微软透过驱动程式模组框架,开发简单和结构化的Windows驱动程式框架(Windows Driver Framework,WDF)驱动程式,并且让驱动程式之间可以重复使用程式码,不只加快开发时程,改良后的架构也解决过去单元间复杂的交互作用。

微软在三年前重新且全面性检视Surface产品的驱动程式,并开始尝试以最大程度共用程式码的方法,重新撰写驱动程式,目的是要提高团队的工作效率,以及增加新产品程式码的可维护性和可扩展性。为此微软将驱动程式中的各个功能分解为可共享的程式码基底,而这项工作也就催生了WDF扩充DMF的诞生,DMF属于WDF物件函式库的一部分。

在过去典型WDF驱动程式设计中,驱动程式在装置上下文(Context)中维护状态,并且程式码被分成存取装置上下文和在单元之间相互通讯两种,而驱动程式开发人员的工作,要确保装置上下文存取同步,以及遵守严格锁定阶层架构,以避免当单元互相通讯时发生崩溃或是死结的情况。

当WDF呼叫驱动程式的时候,开发人员要让驱动程式将工作分派给每个单元,但这过程通常很难知道通讯流程,或是维持适当地同步存取装置上下文。如果想在另一个驱动程式中,重复使用FIFO功能程式码,在提取程式码前,开发人员必须要很清楚地了解单元间复杂地交互作用,否则通常都会发生错误。

而经过改进的架构,在WDF和每个模组中间,有一个仲裁层也就是DMF,来绑定模组并且分配WDF事件给每个模组,因此现在模组能以明确定义方式互相或是与客户端通讯,也就是说,新架构不再像是典型架构那样,所有模组共享装置上下文,而是模组使用各自的装置上下文来维护状态。

传统WDF和基于DMF的WDF驱动程式之间的主要区别有4点,第一点、现在WDF与DMF通讯,而DMF与驱动程式通讯。第二点,装置上下文独立存在于每个模组和客户端驱动程式特定程式码中,而每个装置上下文仅包含该模组所需要的元素,任何模组都无法存取另一个模组的装置上下文。

第三点、WDF回呼现在独立存在于模组和特定客户端程式码,WDF呼叫客户端驱动程式,而DMF拦截呼叫并且分派给实例化模组树中的模组,每个模组按其适合的方式处理回呼,再由DMF分派回呼到客户端驱动程式的回呼。第四点、特定客户端程式码只能与特定模组通讯,像是ACPI模组不能和FIFO模组通讯,Button只能与GPIO和FIFO模组通讯,这样的机制可以良好的控制资料流。总结来说,每个模组现在都是独立的单元,拥有自己的程式码、上下文以及回呼函式,这样的设计能让程式码更易于重复使用,也解决了许多旧架构存在的问题。

现在所有由微软装置团队的WDF驱动程式,都使用DMF撰写而成的,这些DMF模组也都经过仔细的测试,并且可以被重复使用或是根据新的需求扩展。DMF除了提供良好的驱动程式撰写架构外,也提供更友善的臭虫修复功能,当驱动程式使用模组建置时,模组中的臭虫修复功能会自动应用。

2018-08-20 12:31:00

相关文章