《竹林蹊径 深入浅出windows驱动开发》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:张佩,马勇,董鉴源编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2011
  • ISBN:9787121125553
  • 页数:506 页
图书介绍:本书第一个主要内容是围绕WDF而展开讨论。第3章以框架本书为讨论中心;第4、5两章以WDF框架开发USB和1394驱动;第6章讲述内核C++编程,也以WDF框架为蓝本;第7章讲述WDF驱动的测试和调试。第二个主要内容是关于音视频驱动开发。第10章讲述使用AVStream小端口架构,第11章讲述ASIO音频驱动开发。第三个主要内容是关于设备驱动安装。第12章讲系统安装模块。第13章讲述INF安装文件的细节。第14章讲如何编写驱动安装软件。

第1章 Hello World驱动 1

1.1从Hello World开始 2

1.1.1 HelloDRIVER 4

1.1.2代码解释 8

1.1.3驱动程序的编译和安装 11

1.1.4查看我们的驱动 14

1.2虚拟环境 15

1.2.1使用虚拟环境进行驱动开发 15

1.2.2使用VMware虚拟机 15

1.2.3目标机设置 16

1.2.4Virtual PC虚拟机 18

1.3小结 19

第2章 商业驱动开发技术 20

2.1建立开发调试环境 21

2.1.1SVN环境 21

2.1.2创建工程,导入SVN 23

2.1.3建立符号服务器 25

2.1.4用符号调试 27

2.2 64位驱动开发技术 34

2.2.1 64位驱动编写技术 35

2.2.2 32位应用程序与64位驱动混合模式 36

2.3驱动程序的发布与测试 42

2.3.1驱动程序签名 42

2.3.2驱动程序测试 46

2.3.3WHQL 49

2.4小结 50

第3章 WDF概述 51

3.1主要特点 52

3.2框架视图 53

3.3兼容性 55

3.4对象模型 56

3.4.1对象和句柄 59

3.4.2引用计数 60

3.4.3上下文空间 61

3.4.4PME接口 67

3.4.5DDI接口 69

3.4.6父子关系 76

3.4.7对象同步 77

3.5驱动对象和设备对象 78

3.5.1驱动对象 78

3.5.2驱动入口DriverEntry 81

3.5.3设备对象 84

3.5.4创建设备对象 85

3.5.5设备栈 86

3.6 IO模型 88

3.6.1IO目标对象 88

3.6.2IO目标对象的细节 90

3.6.3安全的缓冲区 93

3.6.4内存对象(一) 96

3.6.5内存对象(二) 98

3.6.6框架和I0请求 102

3.6.7更详细的处理流程 103

3.6.8IO请求参数 105

3.6.9队列 107

3.6.10创建IO请求 110

3.7PNP和电源模型 112

3.8小结 115

第4章 WDF USB设备驱动开发 116

4.1 USB设备硬件结构 117

4.1.1主从结构 117

4.1.2硬件拓扑 118

4.1.3USB中断 119

4.2 USB软件结构 120

4.2.1总线驱动 120

4.2.2系统类驱动 121

4.2.3功能驱动 122

4.2.4父驱动与混合设备 122

4.2.5过滤驱动 125

4.2.6USB驱动栈、设备栈 125

4.3内核开发 127

4.3.1设备驱动 127

4.3.2入口函数 128

4.3.3USB描述符 129

4.3.4描述符介绍 130

4.3.5汇总举例 133

4.3.6读取描述符 135

4.3.7初始化 137

4.3.8设备初始化函数 138

4.3.9创建设备对象 141

4.3.10设备命名、符号链接 143

4.3.11启动设备 147

4.3.12创建队列 156

4.3.13停止设备/反初始化 158

4.4数据I/O操作 160

4.4.1 USB控制命令 160

4.4.2构造并发送控制命令 162

4.4.3读USB中断端口 163

4.4.4连续读操作 165

4.4.5数据处理函数 166

4.4.6中断端口的效率 167

4.4.7读/写批量端口 168

4.5设备控制 171

4.5.1关于I/O Target对象 171

4.5.2获取USB版本 172

4.5.3管道重置 174

4.5.4设备重置 176

4.5.5管道中止与终止 177

4.6用户程序 179

4.6.1内核读/写 179

4.6.2控制命令 179

4.7.小结 180

第5章 WDF 1394驱动开发 181

5.1 1394一席谈 182

5.1.1版本情况 183

5.1.2电源特性 183

5.1.3 1394卡 183

5.1.4总线拓扑 184

5.2发送请求 186

5.2.1同步方式 187

5.2.2异步方式 189

5.2.3对WDM的回忆 191

5.3总线重置与计数 193

5.3.1总线重置 193

5.3.2设置重置回调 193

5.3.3计数更新 194

5.4 PNP操作 195

5.5异步通信 196

5.5.1地址范围 197

5.5.2异步读 200

5.5.3异步写 201

5.5.4异步锁请求 202

5.5.5数据流 203

5.6等时通信 204

5.6.1申请带宽 205

5.6.2释放带宽 206

5.6.3等时通道 206

5.6.4资源句柄 207

5.6.5缓冲区挂载 210

5.6.6缓冲区解挂 211

5.6.7开始传输 211

5.6.8停止传输 212

5.6.9其他等时操作 213

5.7其他操作 213

5.7.1设备配置 213

5.7.2获取控制器信息 214

5.7.3速度信息 215

5.7.4厂商自定义命令 216

5.8安装与测试 216

5.8.1 1394虚拟设备 216

5.8.2创建虚拟设备 218

5.8.3示例代码 219

5.8.4安装与测试 221

5.9小结 222

第6章 内核驱动C++编程 223

6.1驱动中的类 224

6.1.1一个简单的例子 224

6.1.2new/delete 225

6.1.3extern“C” 227

6.1.4全局/静态变量 228

6.1.5栈的忧虑 230

6.2类封装的驱动程序 233

6.2.1寻找合适的存储所 233

6.2.2类方法与事件函数 235

6.2.3KMDF驱动实现 236

6.2.4WDM驱动实现 237

6.3 多态 238

6.3.1基类、子类 238

6.3.2实现多态 239

6.3.3测试 241

6.4小结 241

第7章 WDF驱动测试 242

7.1 WDF错误 243

7.1.1实例分析 245

7.1.2USB错误 246

7.2 WDF扩展调试命令 247

7.3 WDFTester 254

7.3.1WDFFiTester 254

7.3.2使用 256

7.3.3WDFCallTracer 260

7.4 WDFVerifler 263

7.4.1识别KMDF驱动 263

7.4.2使用与介绍 265

7.5小结 266

第8章 调试命令详解 267

8.1概述 268

8.1.1寻求帮助 269

8.1.2 DML语言 270

8.1.3基本信息 271

8.1.4基本设置 272

8.1.5格式化显示 273

8.1.6开始调试 273

8.2符号与源码 276

8.2.1模块列表 277

8.2.2模块信息 279

8.2.3符号路径 280

8.2.4符号加载 283

8.2.5符号搜索 285

8.2.6源码命令 287

8.3进程与线程 289

8.3.1进程命令 289

8.3.2线程命令 292

8.3.3异常与事件 296

8.3.4局部变量 300

8.3.5显示类型 301

8.4断点 301

8.4.1软件断点 301

8.4.2硬件断点 303

8.4.3其他操作 303

8.5内存命令 304

8.5.1查看内存 304

8.5.2内存信息 307

8.5.3其他命令 311

8.6小结 312

第9章 内核同步 313

9.1关于内核同步 314

9.2内核事件同步 316

9.2.1原理 316

9.2.2用户程序 318

9.2.3内核实现 319

9.3 IRP同步 320

9.3.1用户程序 321

9.3.2内核实现 323

9.4 WMI同步 325

9.5数据缓冲区同步 326

9.6反向调用 328

9.7小结 330

第10章 音频驱动开发 331

10.1简介 332

10.1.1音频模块架构 332

10.1.2系统中的音频设备 334

10.2 AVStream对象 338

10.2.1设备对象 339

10.2.2 Filter工厂和Filter对象 340

10.2.3 Pin工厂和Pin对象 342

10.2.4 Node对象与Connection结构体 343

10.3 AVStream描述符 346

10.3.1描述符简介 346

10.3.2描述符示例 347

10.3.3分发函数表 349

10.3.4自控表 349

10.3.5自控表示例 351

10.4代码讲解 355

10.4.1入口函数 355

10.4.2设备分发函数 357

10.4.3 Filter与Pin分发函数 358

10.4.4创建和删除 359

10.4.5数据处理 360

10.4.6数据格式 362

10.5自控表函数 364

10.5.1事件函数 364

10.5.2属性函数 366

10.5.3方法函数 367

10.5.4用户接口 367

10.6硬件操作 370

10.6.1数据DMA 370

10.6.2 AVStream中的DMA实现 371

10.6.3谈谈ISR 374

10.7安装与测试 376

10.7.1安装 376

10.7.2测试工具 376

10.8小结 379

第11章 ASlO虚拟声卡 380

11.1引言 381

11.2关于ASIO 383

11.3 ASIO用户驱动 384

11.3.1 COM接口 384

11.3.2安装与卸载 386

11.3.3 IASIO接口 387

11.3.4技术核心 390

11.3.5计算延迟 392

11.4内核驱动实现 393

11.4.1同步 393

11.4.2原理 393

11.4.3实现 396

11.5 ASIO音频软件 396

11.6小结 397

第12章 设备驱动安装入门 399

12.1基础知识预介 400

12.1.1设备类型 400

12.1.2设备实例ID 401

12.1.3驱动加载和安装 403

12.2安装模块 404

12.2.1内核PNP管理器 405

12.2.2用户PNP管理器 406

12.2.3安装接口函数(Setup API) 408

12.2.4配置管理器接口(CfgMgr API) 410

12.2.5类安装器(Class Installers) 410

12.2.6类协安装器(Class Co-Installers) 410

12.2.7设备协安装器(Device Co-Installers) 411

12.2.8驱动包(Driver Package) 412

12.2.9驱动仓库(Driver Store) 413

12.2.10设备管理器(Device Manager) 414

12.2.11安装程序 415

12.2.12新设备向导 416

12.2.13添加硬件向导 416

12.2.14驱动安装器(Driver Installer) 416

12.3重要问题 417

12.3.1寻找和选择 417

12.3.2 32位与64位系统兼容 418

12.3.3系统重启 419

12.4安装模式 420

12.4.1示例1:客户端模式 421

12.4.2示例2:服务器模式 423

12.5安装器编程 424

12.5.1 DIF码 424

12.5.2处理流程 427

12.5.3工程示例 429

12.5.4注册 430

12.6小结 431

第13章 深入解析lNF文件 432

13.1概述 433

13.1.1域 433

13.1.2指令 434

13.1.3多系统 435

13.2注册表指令 436

13.2.1缩写根键 436

13.2.2软件键 437

13.2.3硬件键 437

13.2.4 AddReg 438

13.2.5 DelReg 440

13.2.6 BitReg 441

13.3文件操作指令 441

13.3.1 CopyFiles 441

13.3.2 DelFiles 443

13.3.3 RenFiles 443

13.4服务指令 444

13.4.1 AddService 444

13.4.2 DelService 445

13.5基本域 446

13.5.1版本域 446

13.5.2文件域 447

13.5.3默认安装域 451

13.5.4控制域 454

13.5.5字符串域 457

13.6设备类安装域 458

13.6.1主域 459

13.6.2服务子域 461

13.7接口类安装域 461

13.8厂商/产品域 462

13.8.1厂商域 463

13.8.2产品域 464

13.9设备安装域 464

13.9.1硬件子域 466

13.9.2协安装器子域 467

13.9.3接口子域 468

13.9.4厂商默认配置子域 469

13.9.5逻辑优先配置子域 470

13.10ChkInf介绍 471

13.11小结 472

第14章 设计驱动安装程序 473

14.1驱动包 474

14.1.1安装方式 474

14.1.2安装驱动包 475

14.1.3卸载驱动包 476

14.2驱动更新 477

14.2.1设备已连接 477

14.2.2设备未连接 478

14.2.3枚举系统设备 481

14.3分析INF文件 484

14.3.1函数介绍 484

14.3.2打印设备ID 486

14.4 MyDrvInst介绍 487

14.5制作软件安装包 490

14.5.1视图介绍 490

14.5.2我们的工程 492

14.5.3编译执行 493

14.6小结 494

附录A CYOO1 USB开发板 495

附录B VisualKD + VMWare实现单机内核调试 501