写点什么

微软驱动模块框架旨在简化 Windows 驱动开发

2018 年 8 月 23 日

使用微软最近新开源微软驱动模块框架(DMF),Windows 驱动开发者现在有一种更简单的方式创建简单的结构化驱动以及在驱动之间共享代码了。

该框架诞生于 Surface 团队,微软 DMF 是传统 Windows 驱动框架的一个扩展,旨在简化开发人员创建任意类型 WDF 驱动的过程:

大约在三年前,[Surface] 团队决定从整体上考虑一下针对各种 Surface 产品 [……] 编写的驱动。开始的时候,我们把驱动中单个的功能拆分到一个可共享的代码库中。经过反复的努力,就产生了 DMF:它是 WDF 的一个扩展,为你提供了一个新 WDF 对象库,称为 DMF 模块。模块允许以结构化的方式同其他模块、WDF 和硬件交互。

虽然 WDF 鼓励把驱动创建成单个的 WDF 对象,有一个上下文和事件回调,但 DMF 则倾向于把它分解成若干单独的 WDF 对象,从而使得它们的行为和交互更简洁、更可理解。一个基于 DMF 的驱动包含多个模块,这些模块通过一个很薄的冲裁层来和通常的 WDF 框架交互,该层使用 WDF 回调来分发它们的事件。每个模块都有自己的上下文,用于保持它的状态,并使用相同的 WDF 回调与其他模块进行广泛地通信。模块只能直接和它们的子模块通信,即和它们自己实例化的模块,而不是 DMF 实例化的模块。

 

(图片来自微软公告)

微软已经开源了许多常用模块,驱动开发人员已经可以在自己的驱动中重用它们,如:

  • ACPI 通知模块,使驱动可以从 ACPI 请求和接收异步通知;
  • HID 目标模块,提供一个访问 HID 设备的驱动;
  • 散热接口模块,实现了散热接口,提供了被动和主动冷却回调,供客户端采取措施;
  • 线程,使驱动可以更容易在单独的线程中工作。

按照微软的说法,现如今的所有 WDF 驱动都是基于 DMF 模块。

微软在其中包含了三个样例驱动,展示如何使用 DMF 来创建一个驱动,将来还会提供更多的样例。需要特别指出的是,虽然 DMF 包含的一个库中有微软为自己的 Surface 驱动开发的不同模块,但真正的 Surface 驱动代码并没有包含在 DMF 中。

查看英文原文: Microsoft Driver Module Framework Aims to Ease Windows Driver Development

2018 年 8 月 23 日 19:00936
用户头像

发布了 1008 篇内容, 共 313.6 次阅读, 收获喜欢 282 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

作业-第3周总结

arcyao

架构师训练营第七周学习总结

Gosling

极客大学架构师训练营

第三章学习笔记

博博

Week3小结

幸福小子

设计模式

架构一期第七周作业

Airs

7.7 第七周课后练习

张荣召

第三周作业

孤星

第七周作业

Geek_ce484f

极客大学架构师训练营

架构师训练营第 1 期第七周总结

Leo乐

极客大学架构师训练营

架构师训练营第三周作业

Sandman

第七周作业

icydolphin

极客大学架构师训练营

性能测试中并发量与响应时间和吞吐量的关系

天天向上

极客大学架构师训练营

架构师训练营第 1 期第七周作业

Leo乐

极客大学架构师训练营

架构师训练营 - 第七周总结

一个节点

极客大学架构师训练营

第三章课后作业

博博

架构师训练营第七周课程笔记及心得

Airs

性能优化一第七周作业「架构师训练营第 1 期」

天天向善

第七周作业总结

Geek_ce484f

极客大学架构师训练营

架构师训练营1期 第七周作业

谭明华

极客大学架构师训练营

架构师训练营1期 第七周总结

谭明华

架构师训练营 - 第七周作业

一个节点

极客大学架构师训练营

Week3- 面向对象的设计模式(作业二)

shuyaxx

架构师训练营第 1 期 -第七周作业

睁眼看世界

极客大学架构师训练营

week07作业

追风

架构师一期

Week3总结

lggl

作业

第三章总结

孤星

把打胜仗的决心作为信仰

吴晨曦

创业

Navicat无法连接MySQL怎么办?

MySQL从删库到跑路

MySQL navicat 3306端口

架构师训练营—第七周学习总结

Geek_shu1988

极客大学架构师训练营

Week3作业一

幸福小子

单例模式

架构师训练营—第七周作业

Geek_shu1988

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

微软驱动模块框架旨在简化Windows驱动开发-InfoQ