chapter 4.3: KMDF介绍
来源:互联网 发布:js如何让超链接不跳转 编辑:程序博客网 时间:2024/06/03 14:53
KMDF:kernel mode编程模型,支持filter, function, bus driver的开发。
framework本身提供了可重入的库函数
driver在运行时动态绑定这些库函数,所以可以提供framework版本支持。
可开发的驱动:
- PnP device的function driver
- PnP device的filter driver
- PnP device stack的Bus driver
- miniport driver:NDIS-WDM, NDIS protocol, smartcard
- legacy devices的none-PnP drivers:不属于PnP stack-similar to legacy Windows NT 4.0-style drivers的一部分
driver在构建设备栈时调用framework方法告知framework 驱动类型。
function,filter,bus driver实现了不同回调函数集合。
bus driver通常支持枚举子bus driver的回调函数
function driver通常支持管理I/O 请求及设备power state的回调函数。
KMDF DDI支持所有类别的驱动,而一些DDI主要关注的是function,filter,bus driver
KMDF在不同类型驱动上有不同的默认处理,尤其是对I/O请求的默认处理。
filter driver不处理request时,framework自动把请求传递给栈的下一层驱动
function driver不处理request时,framework自动把请求置为失败
KMDF object
KMDF驱动实现了callback functions,而不是callback objects(UMDF)
KMDF的framework object创建:
framework创建object并且把object handle传给driver:framework接收到I/O request时,它创建I/O request object并把handle传给driver的EvtIoXxx callback routine
driver通过调用framework object创建函数创建一个object:WdfDeviceCreate创建framework device object
both:I/O request object
framework object导出的两种函数:
Methods perform an action
Properties provide access to data(naming convention)
KMDF的目标:起先是为了演化driver model来让问题分解成一系列小步骤,后来由于两个功能让KMDF成为一个革命:
清晰的cleanup和free资源的方式:由于object之间通信的设计
PnP和power,power policy的state machine:分化几乎所有object的设计来管理hardware而不是周围的operating system
KMDF callback functions
driver为了处理某一事件,需要实现一个对应的Callback function,把他注册在framework上
命名callback function:Evt[Object][Event] [object]是对应的framework object,[event]是对应的event
设备接入了D0 power state,framework会调用driver的EvtDeviceD0Entry回调函数
但是,函数命名只是一个规范而已。
- chapter 4.3: KMDF介绍
- chapter 4.6: KMDF子架构
- chapter 5.3: KMDF对象模型实现
- chapter 6.7: KMDF设备对象的创建和初始化
- chapter 4.2: UMDF介绍
- chapter 4.1: Framework介绍
- chapter 1 设备驱动介绍
- chapter 4.4: WDF架构介绍
- chapter 5.1: object model介绍
- 关于umdf 和 kmdf
- KMDF大致框架
- KMDF Version History
- KMDF的WDFREQUEST对象
- chapter 2.4: PnP和电源管理介绍
- TensorFlow实战:Chapter-1(TensorFlow介绍)
- Chapter 3 介绍几种“坐标空间”
- Chapter
- 调试第一个KMDF驱动程序
- “二十一条”:一段失真的历史
- 我是剩女就是怕你不敢娶
- PS shortcut
- find 常用命令
- kmp 总结篇
- chapter 4.3: KMDF介绍
- hibernate知识点
- 解决ubuntu下中文乱码问题
- windows下Emacs中文乱码解决办法[2013-03-07更新]
- mysql无法连接到本地数据库的小问题及解决
- 升级到Ubuntu12.10无法进入原来的Gnome3(Gnome-Shell)图形界面
- PLSQL developer 连接不上64位Oracle 的解决方法
- Nginx配置文件详解(包含获取真实来源IP的方法)
- 我要精通C++——Google C++编程风格指南之命名约定