Windows WDM设备驱动程序开发指南PDF电子书下载
- 电子书积分:14 积分如何计算积分?
- 作 者:(美)(C.坎特)Chris Cant著;孙义等译
- 出 版 社:北京:机械工业出版社
- 出版年份:2000
- ISBN:7111077091
- 页数:404 页
第1章 引言 1
1.1 Windows驱动程序模型 1
1.1.1 WDM与NT式驱动程序 2
1.1.2 可用的驱动程序 3
1.1.3 本书配套光盘 3
1.1.4 设备驱动程序软件工具 3
1.1.5 未讨论的驱动程序类型 4
1.2 新的思维方式 4
1.2.1 设备驱动程序环境 4
1.2.2 术语与资源 5
1.3 Win32程序接口 5
1.3.1 基本I/O 5
1.3.3 环境 6
1.3.2 重叠的异步请求 6
1.3.4 设备特定的限制 7
1.3.5 驱动程序的其他Win32访问 7
1.4 小结 7
第2章 概述 8
2.1 设备驱动程序的组成部分 8
2.1.1 驱动程序入口点和回调例程 9
2.1.2 分发例程 10
2.1.3 创建设备 11
2.1.4 硬件资源分配 11
2.1.5 调用其他驱动程序 11
2.1.6 串行硬件的访问 12
2.1.7 访问硬件 12
2.1.8 硬件问题 12
2.1.12 系统线程 13
2.1.11 NT事件报告 13
2.1.9 电源管理 13
2.1.10 WMI 13
2.2 设备驱动程序的类型 14
2.2.1 Windows概述 14
2.2.2 I/O请求处理 14
2.2.3 即插即用设备栈 15
2.2.4 标准总线驱动程序和类驱动程序 16
2.2.5 驱动程序栈举例 17
2.3 驱动程序选择 18
2.3.1 现成的驱动程序 18
2.3.2 使用标准驱动程序 18
2.3.5 单一驱动程序 19
2.3.6 建议的和可选的功能 19
2.4 WDM的合理性 19
2.3.3 操作系统 19
2.3.4 分层的设备驱动程序 19
2.4.1 一个核心模型 20
2.4.2 复杂性 20
2.4.3 即插即用与分层 20
2.4.6 开发者支持 21
2.5 小结 21
2.4.5 开发环境 21
2.4.4 功能范围 21
第3章 设备驱动程序设计 22
3.1 引言 22
3.2 驱动程序设计指南 22
3.2.1 文档 22
3.2.2 好的设计 22
3.3 内核调用 23
3.3.1 内核宏 24
3.4.1 处理器模式 25
3.4 处理器模型 25
3.3.2 内核对象 25
3.3.3 驱动程序例程名称 25
3.4.2 中断级 26
3.5 使用内存 27
3.5.1 内存池 27
3.5.2 旁视列表 28
3.5.3 其他的内存考虑 28
3.5.4 访问用户应用程序内存 29
3.5.5 DMA 29
3.6 IRP处理 29
3.6.1 IRP参数 30
3.6.2 在驱动程序栈中处理IRP 30
3.7 小结 31
4.1 系统设置 33
4.1.1 DDK 33
第4章 WDM驱动程序环境 33
4.1.2 本书配套光盘软件的安装 34
4.1.3 快捷方式 35
4.2 实用程序 35
4.2.4 硬件向导 36
4.2.7 WBEM 36
4.2.6 INF编辑器 36
4.2.5 注册表编辑器 36
4.2.3 NT Devices小程序 36
4.2.2 计算机管理控制台 36
4.2.1 DOS框 36
4.2.8 调试程序 37
4.2.9 NT和Windows 2000实用程序 37
4.2.10 本书配套光盘上的工具 37
4.3 驱动程序目标 37
4.4 驱动程序语言和库 38
4.6.1 makefile 39
4.5 好的代码 39
4.6 build实用程序 39
4.6.2 SOURCES 40
4.6.3 makefile文件 40
4.6.4 build目录 41
4.6.5 其他build步骤 41
4.6.6 DIRS文件 42
4.7 VC++项目 42
4.7.1 Makefile构造环境 42
4.7.2 MarkDrvr 43
4.7.3 目录 44
4.7.4 常见任务 44
4.8 Wdm1驱动程序代码 44
4.8.2 头文件 45
4.8.3 驱动程序进入模块 45
4.8.1 编译器选项 45
4.8.4 版本资源 46
4.8.5 访问注册表 46
4.8.6 UNICODE_STRING结构 48
4.9 安装Wdm1 50
4.10 安装详细信息 50
4.10.1 INF文件 50
4.10.2 注册表 51
4.10.3 Windows 2000对象 51
4.11 设备和驱动程序的管理 51
4.11.1 添加另一个设备 51
4.11.2 删除设备 51
4.11.3 更新驱动程序 52
4.11.4 NT式驱动程序 52
4.12 小结 52
5.1.1 设备访问 74
第5章 设备接口 74
5.1 设备 74
5.1.2 后续的I/O 75
5.2 设备对象和设备扩展 75
5.3 设备对象的创建和删除 76
5.3.1 创建设备 77
5.3.2 删除设备 78
5.4 设备名 78
5.5 设备接口 80
5.6 Win32设备接口访问 82
5.6.1 得到设备的接口名 83
5.6.2 运行Wdm1Test 84
5.7 小结 86
6.2 驱动程序测试 92
6.2.1 测试所有的函数是否都工作 92
第6章 测试与调试 92
6.1 测试、测试、再测试 92
6.2.2 Windows 2000和Windows 98 93
6.2.3 多处理器 93
6.2.4 取消I/O 93
6.3 调试 94
6.4 调试技术 95
6.4.1 递增式的开发 95
6.5 调试工具 96
6.5.1 Windows 2000事件 96
6.4.2 检查版本 96
6.4.3 Windows 2000还是Windows 98 96
6.5.2 跟踪工具 97
6.5.3 驱动程序验证程序 97
6.5.4 调试程序 97
6.6 DebugPrint 97
6.6.2 使用DebugPrint Monitor 98
6.6.1 使用DebugPrint 98
6.6.3 在驱动程序中使用DebugPrint 99
6.7 关于调试的说明 101
6.7.1 更新驱动程序 101
6.7.2 驱动程序在引导时失败 101
6.7.3 驱动程序依赖性 101
6.7.4 未取消的IRP 101
6.8 错误检查代码 102
6.9 小结 104
第7章 分发例程 105
7.1 分发例程IRP 105
7.2 I/O请求包 105
7.2.1 分发例程处理 105
7.2.2 可重入性 106
7.2.3 IRP处理 106
7.3 IRP结构 107
7.2.4 IRP完成 107
7.4 常用的IRP参数 109
7.4.1 “创建”IRP,IRO_MJ_CREATE 109
7.4.2 “关闭”IRP,IRP_MJ_CLOSE 109
7.4.3 “读”IRP,IRP_MJ_READ 110
7.4.4 “写”IRP,IRP_MJ_WRITE 110
7.4.5 IOCTL IRP,IRP_MJ_IOCTL 110
7.5 用户缓冲区 110
7.5.1 缓冲I/O 110
7.5.2 直接I/O 110
7.5.3 其他I/O方式 111
7.5.4 DeviceIoControl缓冲区 111
7.6 Wdm1分发例程 111
7.6.1 创建和关闭 112
7.6.2 写 113
7.6.3 读 115
7.6.4 IOCTL 115
7.6.5 系统控制 116
7.7 小结 116
第8章 即插即用与设备栈 117
8.1 设计概述 117
8.1.1 设计目标 117
8.1.2 即插即用系统 118
8.2 即插即用消息 121
8.3 设备枚举 123
8.3.1 固定的和可配置的设备 123
8.3.2 枚举 123
8.3.3 设备树 124
8.4.2 设备对象 125
8.4.1 PnP支持与设备栈 125
8.4 设备栈 125
8.5 上沿 126
8.5.1 USB键盘例子 126
8.5.2 功能设备对象和物理设备对象 128
8.5.3 上沿定义 128
8.6 小结 129
第9章 即插即用的实现 130
9.1 实现即插即用 130
9.1.1 添加和删除设备 131
9.1.2 基本的PnP处理程序 131
9.1.3 沿设备栈向下传递不支持的IRP 135
9.1.4 PnP状态和消息 135
9.1.5 状态标志 136
9.1.6 保持IRP 137
9.1.7 打开的句柄 138
9.1.8 处理PnP IRP的时间 139
9.1.9 实现资源分配 145
9.2 测试Wdm2 150
9.3 其他PnP IRP 151
9.3.1 IRP_MN_DEVICE_USAGE_NOTIFICATION 151
9.3.2 IRP_MN_FILTER_RESOURCE_REQUIREMENTS 151
9.3.3 IRP_MN_QUERY_BUS_INFORMATION 151
9.3.4 IRP_MN_QUERY_CAPABILITIES 151
9.3.5 IRP_MN_QUERY_DEVICE_RELATIONS 152
9.3.6 IRP_MN_QUERY_DEVICE_TEXT 152
9.3.7 IRP_MN_QUERY_ID 152
9.3.8 IRP_MN_QUERY_INTERFACE 152
9.3.9 IRP_MN_QUERY_PNP_DEVICE_STATE 152
9.3.14 IRP_MN_WRITE_CONFIG 153
9.4.1 Win32 PnP通知 153
9.4 PnP通知 153
9.3.12 IRP_MN_READ_CONFIG 153
9.3.13 IRP_MN_SET_LOCK 153
9.3.11 IRP_MN_QUERY_RESOURCES 153
9.3.10 IRP_MN_QUERY_RESOURCE_REQUIREMENTS 153
9.4.2 设备驱动程序PnP通知 157
9.4.3 通知请求驱动程序交互 158
9.5 高级的即插即用 158
9.5.1 总线驱动程序 158
9.5.2 发送PnP IRP 159
9.5.3 设备属性 160
9.6 小结 160
第10章 电源管理 161
10.1 电源概述 161
10.1.1 ACPI* 161
10.1.3 Wdm2Power应用程序 162
10.1.2 Win32电源管理 162
10.1.4 电池小类驱动程序 163
10.2 系统电源策略 163
10.3 电源IRP 164
10.4 处理电源IRP 165
10.4.1 处理设备电源IRP 165
10.4.2 处理系统电源IRP 165
10.4.3 不处理电源IRP 167
10.5 设备电源策略主 167
10.6 处理“设置电源”IRP 169
10.6.1 设置系统电源状态 171
10.6.2 设置设备电源状态 174
10.6.3 SetPowerState 174
10.7 分发例程的电源处理 175
10.8 测试Wdm2电源功能 175
10.9 设备功能 176
10.10 高级电源管理 177
10.10.1 唤醒 177
10.10.2 电源顺序 178
10.10.3 停止系统关闭事件 178
10.10.4 电源通知 178
10.10.5 检测系统电源状态变化 178
10.10.6 WMI支持 178
10.11 小结 179
第11章 安装 180
11.1 WDM驱动程序的安装过程 180
11.2 INF文件 180
11.3 标准节 181
11.4 INF文件的节层次结构 182
11.4.1 Wdm1Free.INF 183
11.4.2 InfEdit 186
11.5 跨平台和WDM INF文件 187
11.5.1 在Windows 2000中安装Wdm1 188
11.5.2 Windows 2000服务注册表项 188
11.6 查找驱动程序 189
11.6.1 硬件ID 190
11.6.2 兼容ID 190
11.6.3 重复枚举 191
11.7 NT式驱动程序的安装 191
11.7.1 安装过程 192
11.7.2 驱动程序的装入顺序 193
11.7.3 NT 4控制面板Devices小程序 193
11.7.4 Windows 2000设备管理 194
11.7.6 REG文件 195
11.8 在Windows 98中安装NT式驱动程序 195
11.7.5 Windows 98设备管理 195
11.9 小结 196
第12章 WMI 204
12.1 概述 204
12.1.1 WBEM模型 205
12.1.2 WDM提供者 205
12.2 一个WMI驱动程序 207
12.2.1 WMI构造环境 209
12.2.2 注册为WMI数据提供者 210
12.2.3 处理系统控制IRP 211
12.2.4 QueryWmiRegInfo处理程序 213
12.2.5 QueryWmiDataBlock处理程序 213
12.2.6 SetWmiDataBlock处理程序 215
12.2.7 SetWmiDataItem处理程序 216
12.2.8 ExecuteWmiMethod处理程序 217
12.2.9 触发WMI事件 218
12.3 WMI运行 219
12.4 小结 220
第13章 事件的报告 221
13.1 概述 221
13.2 消息文件 222
13.3 注册为事件源 224
13.4 事件的产生 225
13.5 Wdm3事件的测试 228
13.6 小结 228
第14章 DebugPrint 229
14.1 设计规范 229
14.2 设计实现 229
14.3 测试驱动程序代码 230
14.3.1 系统线程 230
14.3.3 同步 233
14.3.2 事件 233
14.3.4 产生跟踪事件 235
14.3.5 链表 236
14.3.5 最后的代码 238
14.4 DebugPrint驱动程序 239
14.4.1 设计 240
14.4.2 DebugPrint设备 240
14.4.3 读队列 241
14.4.4 取消IRP 242
14.4.5 写算法 244
14.4.6 读算法 245
14.5 DebugPrint Monitor 246
14.5.1 设计 247
14.5.2 Win32工作者线程 247
14.5.3 DebugPrint_Event类 247
14.5.4 Win32重叠I/O 248
14.6 小结 251
第15章 WdmIo和PHDIo驱动程序 252
15.1 Win32接口 252
15.1.1 IOCTL 253
15.1.2 命令 253
15.2 LPT打印机驱动程序的应用程序 254
15.2.1 并行端口 254
15.2.2 WdmoIoTest 255
15.2.3 PHDIoTest 255
15.2.4 发出命令 256
15.2.5 使用中断驱动的I/O写数据 258
15.2.6 使用中断驱动的I/O读数据 260
15.3.1 安装WdmIo 261
15.3.2 LogConfig节 261
15.3 测试WdmIo 261
15.3.3 运行WdmIoTest 262
15.4 测试PHDIo 263
15.4.1 安装PHDIo 263
15.4.2 运行PHDIoTest 263
15.5 WdmIo和PHDIo的分析 264
15.5.1 使用哪一个 264
15.5.2 缺陷 264
15.6 小结 265
第16章 硬件I/O IRP的排队 266
16.1 硬件访问 266
16.2 IRP队列 267
16.2.1 设备队列 267
16.2.2 StartIo例程 268
16.3 命令的处理 271
16.4 取消排队的IRP 272
16.4.2 WdmIo IRP取消策略 273
16.4.1 排队IRP的取消 273
16.4.3 另一种取消策略 274
16.5 “清理”IRP的处理 275
16.6 测试、取消和清理 277
16.7 补充设备队列 278
16.8 小结 282
第17章 中断驱动的I/O 283
17.1 中断处理 283
17.1.1 中断的性质 283
17.1.2 连接到中断 284
17.2 WdmIo读与写 285
17.3 中断处理程序 288
17.4 延迟过程调用 289
17.4.1 使用基本的DPC 290
17.4.2 自定义DPC 291
17.5 定时器 292
17.5.1 1秒间隔定时器 292
17.5.2 WdmIo超时 292
17.5.3 自定义定时器 293
17.6 小结 294
第18章 NT硬件 295
18.1 NT式驱动程序的构造 295
18.1.1 DDK问题 295
18.1.2 编译环境 296
18.1.3 NT式驱动程序结构 296
18.2 设备的创建与删除 296
18.3 资源分配 298
18.4 资源转换 304
18.5 资源的查找 305
18.5.1 自动检测的硬件 306
18.5.2 查询可配置总线 308
18.5.3 最后的资源查找技术 309
18.6 小结 309
第19章 WDM系统驱动程序 310
19.1 客户驱动程序的编写 310
19.2 过滤驱动程序 311
19.3 NT层次 311
19.4 小结 312
第20章 通用串行总线 313
20.1 设备类 313
20.2 概述 314
20.2.1 Windows USB驱动程序接口 314
20.2.2 传输类型 315
20.3 USB低级结构 315
20.3.1 USB设备 315
20.3.3 总线信号 316
20.3.2 USB信号 316
20.3.4 低层协议 317
20.3.5 电源 318
20.4 USB设备框架 318
20.4.1 总线枚举 318
20.4.2 标准控制事务 319
20.4.3 描述符 320
20.4.4 驱动程序安装 321
20.4.5 USB类 321
20.4.6 新增功能 322
20.5 客户驱动程序设计 323
20.5.1 端点类型选择 323
20.5.2 等时设备 323
20.6 小结 324
第21章 USB驱动程序接口 325
21.1.1 UsbKbd的使用 326
21.1 USB客户驱动程序设计 326
21.1.2 UsbKbd安装 327
21.1.3 头文件和库 328
21.2 USBDI的IOCTL 328
21.2.1 URB 329
21.2.2 USBDI的调用 330
21.2.3 多个USBDI调用 332
21.3 访问USB 332
21.3.1 初始化USB设备 332
21.3.2 发出URB 334
21.3.3 选择接口 335
21.3.4 其他初始化 338
21.3.5 取消配置的选择 338
21.3.6 中断传输 338
21.3.7 控制传输 341
21.4 UsbKbd的测试 342
21.3.8 其他问题 342
21.5 USBDI结构参考 346
21.6 USBDI URB参考 348
21.6.1 URB设置功能 348
21.6.2 URB传输功能 350
21.6.3 URB缺省管道功能 351
21.6.4 URB等时帧功能 352
21.7 小结 352
第22章 人工输入设备模型 353
22.1 HID概述 353
22.2 HID模型 354
22.2.1 报告 354
22.2.2 用法 355
22.2.3 获取HID功能 356
22.3.2 设备属性 357
22.3.1 HID描述符 357
22.3 HID模型表示 357
22.3.3 报告描述符 358
22.6 小结 363
第23章 HID客户 364
23.1 HID类驱动程序 364
23.1.1 HID类驱动程序特征 364
23.1.2 Windows HID客户程序 365
23.1.3 头文件 366
23.1.4 HID USB小驱动程序 366
23.1.5 USB启动设备 367
23.2 用户态HID客户程序 367
23.2.1 查找HID设备 368
23.2.2 读取HID功能 368
23.2.3 读取输入报告 372
23.2.4 发送输出报告 374
23.2.5 其他用户态HID客户函数 376
23.2.6 运行HidKbdUser 376
23.3 内核态HID客户程序 379
23.3.1 客户程序类型 379
23.3.2 PnP通知 380
23.3.3 HidKbd设备 381
23.3.4 读取HID功能 386
23.3.5 HidKbd设备的打开和关闭 387
23.3.6 数据的读写 387
23.3.7 其他HID类IOCTL 392
23.4 小结 392
附录A 信息资源 393
附录B PC99 396
附录C 直接存储器访问 400
附录D 词汇表 401
- 《近代旅游指南汇刊二编 16》王强主编 2017
- 《甘肃省档案馆指南》甘肃省档案馆编 2018
- 《区块链DAPP开发入门、代码实现、场景应用》李万胜著 2019
- 《近代旅游指南汇刊 31》王强主编 2014
- 《近代旅游指南汇刊二编 10》王强主编 2017
- 《阅读指要》陈艺鸣编著 2020
- 《手工咖啡 咖啡爱好者的完美冲煮指南》(美国)杰茜卡·伊斯托,安德烈亚斯·威尔霍夫 2019
- 《近代旅游指南汇刊 13》王强主编 2014
- 《近代旅游指南汇刊 28》王强主编 2014
- 《程序逻辑及C语言编程》卢卫中,杨丽芳主编 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《高等教育双机械基础课程系列教材 高等学校教材 机械设计课程设计手册 第5版》吴宗泽,罗圣国,高志,李威 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《中国十大出版家》王震,贺越明著 1991
- 《近代民营出版机构的英语函授教育 以“商务、中华、开明”函授学校为个案 1915年-1946年版》丁伟 2017
- 《新工业时代 世界级工业家张毓强和他的“新石头记”》秦朔 2019
- 《智能制造高技能人才培养规划丛书 ABB工业机器人虚拟仿真教程》(中国)工控帮教研组 2019
- 《AutoCAD机械设计实例精解 2019中文版》北京兆迪科技有限公司编著 2019