第1章 Windows 2000和WDM驱动程序 1
1.1 Windows 2000组件概述 1
1.2 Windows 2000中的驱动程序种类 3
1.3 WDM驱动程序特点 4
1.3.1 内核模式驱动程序的设计目标 4
1.3.2 WDM驱动程序模型 7
1.3.3 设备和驱动程序的层次结构 8
1.3.4 中断级别IRQL 9
1.3.5 设备接口 10
第2章 KMDF驱动程序框架 12
2.1 KMDF对象 12
2.1.1 对象概念 12
2.1.2 基本对象 17
2.2 KMDF程序结构 18
2.2.1 DriverEntry例程 19
2.2.2 EvtDriverDeviceAdd例程 22
2.2.3 I/O处理例程 25
2.2.4 即插即用和电源管理例程 30
2.3 CharSample实例 30
第3章 基本对象 32
3.1 WDFREQUEST对象 32
3.1.1 WDFREQUEST对象函数 32
3.1.2 I/O请求基本操作 38
3.2 WDFQUEUE对象 44
3.2.1 WDFQUEUE对象函数 46
3.2.2 队列编程 48
3.3 WDFTIMER对象 50
3.4 WDFDPC对象 52
3.5 WDFWORKITEM对象 53
3.6 WDFMEMORY对象 55
3.7 数据同步访问 56
3.7.1 WDFSPINLOCK对象 57
3.7.2 WDFWAITLOCK对象 58
3.8 字符串操作 58
3.8.1 字符串格式 58
3.8.2 WDFSTRING对象 59
3.8.3 串处理函数 60
3.9 QueueSample实例 61
第4章 KMDF驱动程序编程入门 70
4.1 建立KMDF编程环境 70
4.2 创建KMDF驱动程序 71
4.3 生成KMDF驱动程序 72
4.4 安装KMDF驱动程序 73
4.5 RegSample实例 78
4.5.1 RegSample驱动程序 78
4.5.2 Win32 Console应用程序 92
4.5.3 MFC应用程序 98
4.6 调试说明 103
第5章 KMDF驱动程序和应用程序之间的通信 104
5.1 应用程序对驱动程序的通信 104
5.1.1 打开设备 105
5.1.2 关闭设备 106
5.1.3 DeviceIoControl函数调用 106
5.1.4 ReadFile和WriteFile函数调用 111
5.1.5 IOSample实例 112
5.2 驱动程序对应用程序的通信 116
5.2.1 DeviceIoControl异步完成 116
5.2.2 WIN32事件通知 117
5.3 驱动程序对应用程序通信实例 119
5.3.1 异步完成实例CancelSample 120
5.3.2 事件通知实例EventSample 130
第6章 即插即用例程 145
6.1 即插即用简介 145
6.1.1 PnP组件 145
6.1.2 即插即用例程 146
6.1.3 例程的加载和卸载顺序 150
6.2 PnpPowerSample实例 152
第7章 电源管理 160
7.1 电源管理简介 160
7.1.1 系统电源状态与设备电源状态 160
7.1.2 电源管理控制标志位 162
7.1.3 设备的唤醒特征和空闲检测 163
7.2 电源管理编程 163
7.2.1 电源管理基本例程 164
7.2.2 设备唤醒 164
7.2.3 空闲检测 166
7.3 IdleSample实例 168
第8章 KMDF过滤器驱动程序 174
8.1 KMDF过滤器驱动程序的编程 175
8.2 KMDF过滤器驱动程序安装 176
8.3 FilterSample实例 177
第9章 USB设备开发 188
9.1 USB接口概述 188
9.1.1 USB设备的配置、接口和端点 189
9.1.2 USB数据的传输方式 192
9.1.3 USB描述符 199
9.1.4 标准设备请求 207
9.2 USB编程对象 210
9.2.1 WDFUSBDEVICE对象 210
9.2.2 WDFUSBINTERFACE对象 215
9.2.3 WDFUSBPIPE对象 218
9.3 USB编程 222
9.3.1 激活配置与中止配置 222
9.3.2 同步操作 224
9.3.3 异步操作 225
9.4 USBSample实例 227
第10章 PCI设备驱动程序开发 244
10.1 硬件访问 245
10.1.1 I/O访问 245
10.1.2 存储器访问 248
10.1.3 硬件访问编程 251
10.2 中断处理 254
10.2.1 WDFINTERRUPT对象 254
10.2.2 中断处理编程 257
10.3 DMA传输 258
10.3.1 DMA编程对象 258
10.3.2 DMA传输编程 267
10.4 PCISample实例 268
10.5 DMASample实例 279
第11章 UMDF驱动程序编程入门 297
11.1 UMDF编程环境 297
11.2 创建UMDF驱动程序 297
11.3 生成UMDF驱动程序 299
11.4 安装UMDF驱动程序 299
11.5 UMDFSample实例 302
11.5.1 驱动程序 302
11.5.2 Win32 Console应用程序 339
第12章 WinDbg使用介绍 340
12.1 用WinDbg调试KMDF 340
12.1.1 目标机的设置 341
12.1.2 主控机的路径设置 343
12.1.3 建立连接 343
12.1.4 加载符号文件 344
12.1.5 设置断点 345
12.1.6 断点执行 346
12.1.7 下载符号包 347
12.2 用WinDbg调试UMDF 348
12.2.1 路径设置 348
12.2.2 链接进程 348
12.2.3 设置断点 349
12.2.4 使能UMDF加载和初始化代码调试 350
参考文献 351