内容简介
第一部分 设备驱动程序体系结构概述
第1章 对象
1.1对象的本质
1.2软件对象是什么
1.3预备知识
1.4软件组件
第2章 WDF体系结构
2.1 WDF组件的功能
2.2 WDF的设计目标
2.3 WDF中的设备和驱动程序支持
2.4 WDF驱动程序模型
2.5 WDF对象模型
2.5.1内核模式对象
2.5.2用户模式对象
2.6即插即用和电源管理支持
2.7集成的I/O排队和取消
2.7.1并发
2.7.2 I/O模型
2.7.3 I/O请求流程
2.7.4设备I/O请求
2.7.5即插即用和电源管理请求
2.8 WMI请求(仅限内核模式驱动程序)
2.9驱动程序框架
2.9.1内核模式框架
2.9.2用户模式框架
2.10 Windows内核
2.10.1反射器
2.10.2驱动程序宿主进程
2.10.3驱动程序管理器
2.11开发和测试工具
2.11.1 PFD
2.11.2 SDV
2.11.3框架验证器
2.11.4跟踪日志
2.11.5调试器扩展
2.11.6适用性和版本控制
第二部分 用户模式驱动程序
第3章 Windows 7用户模式驱动程序概述和操作
3.1在用户模式中支持的设备
3.2 UMDF模型概述
3.2.1 UMDF对象模型
3.2.2 UMDF对象
3.3驱动程序回调接口
3.4 UMDF驱动程序功能
3.4.1身份模拟
3.4.2设备属性存储
3.5 I/O请求流
3.5.1 I/O请求调度
3.5.2创建、清理和关闭请求
3.5.3创建、读、写和设备I/O控制请求
3.6 I/O队列
3.6.1调度类型
3.6.2队列和电源管理
3.7 I/O请求对象
3.7.1根据I/O请求获取缓冲区
3.7.2向I/O目标发送I/O请求
3.7.3为I/O请求创建缓冲区
3.7.4取消和挂起的请求
3.7.5完成I/O请求
3.7.6自适应超时
3.8自管理I/O
3.9同步问题
3.10锁
3.11即插即用和电源管理通知
3.12设备枚举和启动
3.13关闭设备电源和移除设备
3.14构建、测试和调试
3.14.1安装和配置
3.14.2版本控制和更新
第4章 针对UMDF进行驱动程序编程
4.1 Windows 1/O概述
4.2 COM简介
4.3 UMDF体系结构
4.4必需的驱动程序功能
4.5 UMDF示例驱动程序
4.5.1最小UMDF驱动程序:Skeleton驱动程序
4.5.2 Skeleton驱动程序的类、对象和接口
4.6驱动程序动态链接库和导出
4.6.1驱动程序入口点:DllMain
4.6.2获得类对象:DllGetClassObject
4.7 COM支持函数
4.7.1IUnknown方法
4.7.2IC1assFactory接口
4.7.3驱动程序回调对象
4.7.4设备回调对象
4.8以Skeleton驱动程序为基础进行开发
4.8.1自定义导出文件
4.8.2自定义源文件
4.8.3自定义INX文件
4.8.4自定义Comsup.cpp文件
4.8.5将特定于设备的代码加入Driver.cpp
4.8.6将特定于设备的代码加入Device.cpp
第5章 使用COM开发UMDF驱动程序
5.1入门指南
5.1.1 COM基础知识
5.1.2 HRESULT
5.2使用UMDF COM对象
5.2.1获得UMDF对象的接口
5.2.2引用计数
5.3基本的基础设施实现
5.3.1 DllMain
5.3.2 DllGetClassobject
5.3.3驱动程序对象的类工厂
5.3.4实现UMDF回调对象
5.3.5实现QueryInterface
第三部分 内核模式驱动程序
第6章Windows 7内核模式驱动程序概述与操作
6.1 KMDF支持的设备
6.2 KMDF组件
6.3 KMDF驱动程序结构
6.4 KMDF和WDM驱动程序比较
6.5设备对象和驱动程序角色
6.5.1过滤器驱动程序和过滤器设备对象
6.5.2功能驱动程序和功能设备对象
6.5.3总线驱动程序和物理设备对象
6.5.4旧版设备驱动程序和控制设备对象
6.6 KMDF对象模型
6.6.1方法、属性和事件
6.6.2对象层次结构
6.6.3对象特性
6.6.4对象上下文
6.6.5对象创建和删除
6.7 KMDFI/O模型
6.7.1 I/O请求处理程序
6.7.2 I/O队列
6.7.3 I/O请求对象
6.7.4从I/O请求检索缓冲区
6.7.5 I/O目标
6.7.6创建I/O请求缓冲区
6.7.7取消和挂起请求
6.7.8完成I/O请求
6.7.9自托管I/O
6.7.10访问IRP和WDM结构
第7章 即插即用和电源管理
7.1即插即用和电源管理概述
7.2设备枚举和启动
7.2.1功能或过滤器设备对象的启动顺序
7.2.2物理设备对象的启动顺序
7.2.3设备电源关闭和移除
7.3 WMI请求处理程序
7.4同步问题
7.4.1同步范围
7.4.2执行级别
7.4.3锁
7.4.4同步机制的交互作用
7.5安全
7.5.1安全默认值
7.5.2参数验证
7.5.3 Unicode计数字符串
7.5.4安全设备命名技术
第8章 内核模式的安装和生成
8.1 WDK生成工具
8.2生成环境
8.3生成项目
8.4生成Featured Toaster
8.4.1 Makefile和Makefile.inc
8.4.2源文件
8.4.3生成过程
8.5安装KMDF驱动程序
8.5.1 WDF辅助安装程序
8.5.2 INF
8.5.3 KMDF驱动程序的INF
8.5.4 wdffeatured.inf
8.6目录文件和数字签名
8.7安装Featured Toaster
8.8测试KMDF驱动程序
8.8.1 PREfast
8.8.2 SDV
8.8.3 KMDF日志
8.8.4 KMDF验证程序
8.8.5调试KMDF驱动程序
8.8.6内核调试
8.8.7 KMDF驱动程序功能
8.9调试宏和例程
8.10 WDF调试程序扩展命令
8.11使用WPP跟踪与KMDF驱动程序
8.12使用WinDbg与FeaturedToaster
8.13版本控制和动态绑定
第9章 为KMDF编写驱动程序
9.1 KMDF与WDM示例之间的差别
9.2 KMDF示例中使用的宏
9.3 KMDF驱动程序结构和概念
9.3.1对象创建
9.3.2对象上下文区
9.3.3 I/O队列
9.3.4 1/O请求
9.4最小的KMDF驱动程序:SimpleToaster
9.4.1创建WDF驱动程序对象:DriverEntry
9.4.2创建设备对象、设备接口和I/O队列:EvtDriver-DeviceAdd
9.4.3设备对象和设备上下文区
9.4.4设备接口
9.4.5默认I/O队列
9.4.6处理I/O请求:EvtIoRead、EvtIoWrite、 EvtIoDevice-Control
9.5纯软件驱动程序示例
9.5.1文件创建和关闭请求
9.5.2其他的设备对象特性
9.5.3设置其他设备对象属性
第10章 为即插即用和电源管理编写程序
10.1注册回调函数
10.2管理电源策略
10.3通电和断电时的回调函数
10.4支持唤醒信号的回调函数
第11章为WMl支持编写程序
11.1 WMI体系结构
11.2注册为WMI数据提供程序
11.3处理WMI请求
11.4 WDM驱动程序的WMI要求
11.5 WMI类名和基类
11.6触发WMI事件
11.7解决具体的WMI问题
11.7.1驱动程序的WMI类并不出现在\root\wmi命名空间中
11.7.2不能访问驱动程序的WMI属性或方法
11.7.3未接收驱动程序的WMI事件
11.7.4改变WMI请求的安全设置并不生效
11.8测试WMI驱动程序支持的技术
11.8.1 WMI IRP和系统事件日志
11.8.2 WMI WDM提供程序日志
11.9 WMI事件跟踪
第12章 编写KMDF硬件驱动程序
12.1支持设备中断
12.1.1创建中断对象
12.1.2创建中断对象的代码
12.1.3启用和禁用中断
12.1.4启用中断的代码
12.1.5禁用中断的代码
12.1.6启用中断后和禁用中断前的处理
12.2处理中断
12.2.1 EvtInterruptIsr回调函数的代码
12.2.2中断的延迟处理
12.3映射资源
12.3.1映射资源的代码
12.3.2取消映射资源的代码
第13章 编写多个l/O队列程序并编写l/O程序
13.1编写1/O队列简介
13.2创建和配置队列
13.2.1为写请求创建队列的代码
13.2.2为读请求创建队列的代码
13.2.3为设备I/O控制请求创建队列的代码
13.3处理并行队列的请求
13.3.1处理I/O请求的代码
13.3.2执行缓冲1/O
13.4将请求转发给队列
13.5从手动队列获取请求
13.6读取和写入注册表
13.7监视器计时器:自管理I/O
13.7.1启动和重启自管理I/O设备
13.7.2设备断电和移除期间的自管理I/O
13.7.3实现监视器计时器
附录 驱动程序信息网站
参考文献