没有合适的资源?快使用搜索试试~ 我知道了~
如何用KMDF开发驱动
5星 · 超过95%的资源 需积分: 50 79 下载量 154 浏览量
2009-02-13
19:38:31
上传
评论
收藏 295KB PDF 举报
温馨提示
试读
18页
本文档描述了如何用KMDF(Windows系列OS下WDF驱动开发环境的组件)开发驱动的简单示例,用于指导已熟悉KMDF的开发人员来编写第一个内核模式的驱动。本文通过几个内核模式驱动的示例来阐明WDF驱动的结构以及如何实现驱动的通用功能。 从结构组织上,本文在简单回顾KMDF的基础上,在第4章讲述如何编写基于KMDF的最小Function驱动,在第5章讲述如何编写基于KMDF的纯软件驱动,在第6章讲述如何编写基于KMDF的硬件设备驱动。
资源推荐
资源详情
资源评论
KMDF 示例
摘 要
本文档描述了如何用 KMDF(Windows 系列 OS 下 WDF 驱动开发环境的组件)开发驱
动的简单示例,用于指导已熟悉 KMDF 的开发人员来编写第一个内核模式的驱动。本文通
过几个内核模式驱动的示例来阐明 WDF 驱动的结构以及如何实现驱动的通用功能。
从结构组织上,本文在简单回顾 KMDF 的基础上,在第 4 章讲述如何编写基于 KMDF
的最小 Function 驱动,在第 5 章讲述如何编写基于 KMDF 的纯软件驱动,在第 6 章讲述如
何编写基于 KMDF 的硬件设备驱动。
由于译者水平有限,错误在所难免,请见谅。
xjtusdbzh
www.driverdevelop.com
第 1 页,共 18 页
KMDF 示例
目 录
1 简介 ..............................................................................................................................................4
2 WDF示例代码...............................................................................................................................4
2.1 按名称分类........................................................................................................................4
2.2 按设备分类........................................................................................................................4
2.3 KMDF和WDM示例的区别 ...............................................................................................5
2.4 使用宏.................................................................................................................................5
3 结构和概念...................................................................................................................................5
3.1 对象创建............................................................................................................................6
3.2 上下文区............................................................................................................................6
3.3 IO队列 ................................................................................................................................6
3.4 IO请求 ................................................................................................................................7
4 KMDF最小驱动 ............................................................................................................................7
4.1 DriverEntry .........................................................................................................................7
4.2 AddDevice...........................................................................................................................8
4.2.1 设备对象和上下文区.............................................................................................8
4.2.2 设备接口.................................................................................................................8
4.2.3 默认IO队列 ............................................................................................................9
4.3 读、写和IOCTL................................................................................................................9
5 KMDF无硬件驱动 ........................................................................................................................9
5.1 文件打开关闭.....................................................................................................................9
5.2 另外的属性.......................................................................................................................10
5.2.1 同步Scope..............................................................................................................10
5.2.2 IRQL ......................................................................................................................10
5.2.3 CleanUp .................................................................................................................10
5.2.4 设定设备对象属性...............................................................................................10
5.3 PnP和电源 ........................................................................................................................10
5.3.1 注册回调...............................................................................................................11
5.3.2 电源策略管理.......................................................................................................11
5.3.3 上电和下电的回调...............................................................................................12
5.3.4 Wake信号的回调...................................................................................................12
5.4 WMI..................................................................................................................................12
5.4.1 初始化WMI..........................................................................................................12
5.4.2 WMI实例事件的回调 ...........................................................................................12
5.4.3 触发WMI回调 ......................................................................................................12
6 KMDF硬件驱动 ..........................................................................................................................13
6.1 支持中断..........................................................................................................................13
6.1.1 创建中断对象.......................................................................................................13
6.1.2 中断使能和禁用...................................................................................................13
6.1.3 中断使能后和禁用前...........................................................................................13
6.1.4 处理中断...............................................................................................................14
6.1.5 中断的延期处理...................................................................................................14
6.2 映射资源..........................................................................................................................14
第 2 页,共 18 页
KMDF 示例
6.3 多IO队列处理IO .............................................................................................................15
6.3.1 创建和配置队列...................................................................................................15
6.3.2 处理并发请求.......................................................................................................15
6.3.3 处理BufferIO........................................................................................................16
6.3.4 转发到其他队列...................................................................................................16
6.3.5 从手动队列获得请求............................................................................................16
6.4 注册表相关......................................................................................................................16
6.5 自管理IO的WatchDog定时器.........................................................................................16
6.5.1 设备启动和重启时的自管理IO...........................................................................17
6.5.2 设备下电和被移除的自管理IO...........................................................................17
6.5.3 实现Watchdog定时器...........................................................................................17
第 3 页,共 18 页
KMDF 示例
1 简介
WDF 是微软基于 Windows 系列 OS 的下一代驱动开发模型,同时支持 Kernel 模式和
User 模式驱动开发,两者基于独立但功能类似的驱动框架(分别是 KMDF 和 UMDF)。
KMDF 的设计目的是提高开发效率、鼓励更多工程师进行驱动开发,使用它我们可以
迅速建立驱动的框架结构(能加载和运行),在此之上,我们可以添加更复杂的或硬件特定
的功能。
本文讲解如何用 KMDF 写 WDF驱动,重点关注 WDF 附带的示例代码细节,包括 Sample
Toaster、Featured Toaster 和 PCIDRV,两个 Toaster 用于了解 WDF 开发的一般步骤(不含硬
件的驱动一个是最小驱动,一个是纯软件驱动),而 PCIDRV 用于示范硬件的驱动开发方法。
阅读本文,需要了解:Kernel 编程的基础(例 如 IRQL 和锁),WDF 的设计目的、KMDF
对象模型以及 IO 模型,请参考《Architecture of the Kernel-Mode Driver Framework》,对 应 我
翻译过的《WDK 之内核模式驱动框架 KMDF 简介.doc》,以及《Architecture of the Windows
Driver Foundation》。
2 WDF 示例代码
WDF 安装后有几个内核驱动示例代码,位于 Src\Kmdf 子目录中,您可以参考其驱动基
本框架的编写以及特定功能的实现技巧。本节从名称、设备功能列出主要示例,关于驱动特
性表请查英文原文档。
2.1 按名称分类
驱动名称 描述
Echo
不控制任何硬件,示范如何使用串行 IO 对列莱完成读写,如何取消请
求
FakeModem
无控制器 Modem 驱动
Firefly
HID 设备过滤驱动
NdisEdge
上沿是 NDIS,下沿是 USB、1394 以及串口等
Ramdisk
RAM 磁盘驱动,示范如何在内存中创建虚拟磁盘
Serial
串口驱动
2.2 按设备分类
驱动名称 设备模型 描述
Serial
串口、并口、IDE 控制器、
PS/2 控制器
硬件支持端口映射 IO,支持中断(用户
通知输入到达或其他异步事件)
Toaster bus driver
不符合 PCI 规范的多功能
PCI 设备,多端口串口卡,
多端口(Port)网卡
硬件有多个功能,支持多个设备
或者驱动支持虚拟总线
第 4 页,共 18 页
剩余17页未读,继续阅读
zwz1984
- 粉丝: 69
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页