深入浅出windows驱动开发的目录_1

网上科普有关“深入浅出windows驱动开发的目录”话题很是火热,小编也是针对深入浅出windows驱动开发的目录寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临...

网上科普有关“深入浅出windows驱动开发的目录”话题很是火热,小编也是针对深入浅出windows驱动开发的目录寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。

向内核世界说一声:hello,我来了。如果你是一个初学者,并对这个世界充满好奇心,请从这一章开始,我们一起打招呼~

第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.4 Virtual PC虚拟机 18

1.3 小结 19

如何在规范的商业环境中,开发成功而有效的驱动软件?驱网站长马勇(ZnSoft)将向你娓娓道来。你会学到这些内容:建立一个简单而有效的开发、调试环境;64位环境下的内核编程技巧;如何发布你的驱动软件。

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

2.1 建立开发调试环境 21

2.1.1 SVN环境 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.3 WHQL 49

2.4 小结 50

WDF是目前最新的驱动编程框架。当很多内核程序员还紧抱WDM的巨大佛脚时,千万要记住,WDF已是大势所趋。本章介绍了WDF最重要的几个概念,并进行了一定程度的深度挖掘。对于WDF框架的三大核心模型:对象模型、事件模型、PNP/Power模型,本章作了重点讲述。

第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.4 PME接口 67

3.4.5 DDI接口 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.1 IO目标对象 88

3.6.2 IO目标对象的细节 90

3.6.3 安全的缓冲区 93

3.6.4 内存对象(一) 96

3.6.5 内存对象(二) 98

3.6.6 框架和IO请求 102

3.6.7 更详细的处理流程 103

3.6.8 IO请求参数 105

3.6.9 队列 107

3.6.10 创建IO请求 110

3.7 PNP和电源模型 112

3.8 小结 115

使用WDF框架开发USB驱动,方便且简单。本章首先总体上从硬件和软件两个方面介绍USB相关知识点,包括设备的电气特性、总线结构、USB驱动类型以及类驱动。编程方面,从USB设备初始化、数据操作以及设备控制等几个方面来讲解,透彻并且翔实。

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

4.1 USB设备硬件结构 117

4.1.1 主从结构 117

4.1.2 硬件拓扑 118

4.1.3 USB中断 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.6 USB驱动栈、设备栈 125

4.3 内核开发 127

4.3.1 设备驱动 127

4.3.2 入口函数 128

4.3.3 USB描述符 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

1394俗称火线。大伙平时最多接触它的地方大概是内核调试时,借助1394卡进行双机互联。本章首先从硬件方面介绍了1394的知识,它的总线结构很特别,极具可扩性,能非常方便地在各种类型的1394设备之间建立数据链路。内核编程方面,本章重点讲解了数据通信相关知识,分为异步通信和同步通信两种方式,颇为复杂,相对难于掌握,但套路是现成的,变化的东西不多,可以熟能生巧。本章最后介绍了1394双机互联的原理,有兴趣的读者可参考之。

第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

内核天生适合于C语言编程,但越来越多的内核项目,规模达到10数万的规模。在这种情况下,人们不由地会将目光投向优雅的C++语言。总体上说,C和C++是至亲好友,内核中使用C++本不应有什么大问题,但有几个暗礁潜伏已久,不小心的程序员,你可千万不要触礁。

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

6.1 驱动中的类 224

6.1.1 一个简单的例子 224

6.1.2 new/delete 225

6.1.3 extern C 227

6.1.4 全局/静态变量 228

6.1.5 栈的忧虑 230

6.2 类封装的驱动程序 233

6.2.1 寻找合适的存储所 233

6.2.2 类方法与事件函数 235

6.2.3 KMDF驱动实现 236

6.2.4 WDM驱动实现 237

6.3 多态 238

6.3.1 基类、子类 238

6.3.2 实现多态 239

6.3.3 测试 241

6.4 小结 241

使用WDF框架编写的驱动程序,在测试和调试的时候,有特殊的工具。本章介绍了目前所知的三个,它们分别是:Windbg扩展调试命令、WDFTester测试工具、WDFVerifier测试工具。本章将以示例方式,介绍这些工具的使用。

第7章 WDF驱动测试 242

7.1 WDF错误 243

7.1.1 实例分析 245

7.1.2 USB错误 246

7.2 WDF扩展调试命令 247

7.3 WDFTester 254

7.3.1 WDFFiTester 254

7.3.2 使用 256

7.3.3 WDFCallTracer 260

7.4 WDFVerifier 263

7.4.1 识别KMDF驱动 263

7.4.2 使用与介绍 265

7.5 小结 266

SoftIce渐行渐远之后,Windbg成为内核调试的第一利器。使用Windbg的最大难点是命令繁多,参数复杂。本章以总结归纳的形式,介绍了作者在工作中经常用到的几大类调试命令,并以实例形式一一介绍。作者根据个人经验所作的分类,未能全备,但能够保证的是,所有实例翔实而可靠,可以作为可信的参考。

第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

相信大多数人在学习内核开发的时候,都问过这样一个问题:内核驱动怎么向用户程序发送消息,或者如何调用Win32函数。用户程序和内核同步,是一个基本而重要的知识,本章介绍了三种主要的实现方式。至于内核是否可以调用Win32函数,读一读本章开篇的话,你就有答案了。

第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

微软最新的音视频编程框架即AVStream框架,不管从什么方面来说,音视频编程都是一个很小众的领域。AVStream框架极其复杂,个人看法是掌握的难度超过了WDF。本章介绍了AVStream框架的各种基本知识点,并以实例讲解一个内核音频过滤器在系统中是如何工作的。

第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

ASIO音频驱动具有两个非常亮眼的优点:低延迟、多通道。低延迟能够达到几毫秒,使得最灵敏的耳朵也难也察觉;多通道则让通常的双声道、6.1声道等一齐歇菜,而可以很轻松地让多达十几、几十个声道同时工作,在进行高级音频编辑时,这非常重要。

第11章 ASIO虚拟声卡 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

INF文件即驱动程序的“安装文件”,它包含了各种与驱动安装有关的指令信息。通过INF文件,系统知道如何处理驱动包中的各个文件,并在系统注册表中做出准确记录。本章主要从指令和域,这两个方面进行讲解。

第13章 深入解析INF文件 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.10 ChkInf介绍 471

13.11 小结 472

驱动安装程序让你的驱动软件显得更加专业,所以,放弃手动安装驱动的做法吧,你的驱动将显得更靓。本章的示例软件MyDrvInst,可以作为读者设计更漂亮的安装软件的开始。

第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 CY001 USB开发板 495

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

关于“深入浅出windows驱动开发的目录”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!

本文来自作者[殷新红]投稿,不代表空气号立场,如若转载,请注明出处:https://www.haokongqi.org.cn/cshi/202505-467.html

(216)

文章推荐

  • 为什么加油站加油车辆必须熄火

    网上科普有关“为什么加油站加油车辆必须熄火”话题很是火热,小编也是针对为什么加油站加油车辆必须熄火寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。原因:停车熄火是非常的重要的,如果加油时汽车没有熄火,会造成很大的安全隐患。汽油是非常易燃易爆的物品,如果汽油站发

    2024年12月15日
    60
  • 监控摄像头一般只要接一个nvr就可以上墙并且存储了吗

    网上科普有关“监控摄像头一般只要接一个nvr就可以上墙并且存储了吗”话题很是火热,小编也是针对监控摄像头一般只要接一个nvr就可以上墙并且存储了吗寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。不管你是用的是几个摄像头(IPC)只要你的录像机(NVR)通道数够

    2025年02月28日
    183
  • 解封英语翻译(解封英语怎么写)

    今天给各位分享解封英语翻译的知识,其中也会对解封英语怎么写进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!关于国际贸易方便翻译,求专业翻译!1、除了“importandexport”“Internationaltrade”【国际贸易】应该是比较符合的了这个词组包含了多

    2025年03月03日
    28
  • 实测教程“链接炸金花开挂在哪里买(富秦E支付APP下载最新)

    网上科普有关“链接炸金花开挂在哪里买”话题很是火热,小编也是针对链接炸金花开挂在哪里买寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,链接炸金花开挂在哪里买这款游戏可以开挂的,确实是有挂的,通过微信【游戏】很多玩家在这款游戏中打牌都会发现很多

    2025年03月04日
    16
  • 实测教程“四川麻将挂怎么开(醋我音乐盒)

    网上科普有关“四川麻将挂怎么开”话题很是火热,小编也是针对四川麻将挂怎么开寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,四川麻将挂怎么开这款游戏可以开挂的,确实是有挂的,通过微信【游戏】很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总

    2025年03月05日
    17
  • 实测教程“微信链接九天大厅能不能开挂(低音号APP)

    网上科普有关“微信链接九天大厅能不能开挂”话题很是火热,小编也是针对微信链接九天大厅能不能开挂寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,微信链接九天大厅能不能开挂这款游戏可以开挂的,确实是有挂的,通过微信【游戏】很多玩家在这款游戏中打牌

    2025年03月05日
    15
  • 分享干货”微乐三代有没有挂(其实真的能开挂)

    分享干货”微乐三代有没有挂网上科普有关“分享干货”微乐三代有没有挂”话题很是火热,小编也是针对分享干货”微乐三代有没有挂寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,分享干货”微乐三代有没有挂这款游戏可以开挂的,确实是有挂的,通过微

    2025年03月07日
    16
  • 分享干货”微信小程序棋牌透视软件”(其实是有挂)

    分享干货”微信小程序棋牌透视软件网上科普有关“分享干货”微信小程序棋牌透视软件”话题很是火热,小编也是针对分享干货”微信小程序棋牌透视软件寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,分享干货”微信小程序棋牌透视软件这款游戏可以开挂

    2025年03月07日
    18
  • 东莞疫情行踪(东莞疫情行程轨迹)

    本篇文章给大家谈谈东莞疫情行踪,以及东莞疫情行程轨迹对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。不开机只登陆微信扫码可以查到疫情行踪迹吗只登陆微信扫码可以查到疫情行踪。有两种方式可以查询疫情行踪:根据您的手机服务商,选择下面的二维码。利用微信扫一扫二维码,在打开的页面中,输入您的电话号

    2025年03月16日
    19
  • 疫情大数据动态(疫情大数据地图)

    本篇文章给大家谈谈疫情大数据动态,以及疫情大数据地图对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。经典案例库|数据新闻案例集合大放送!澎客工坊《自杀干预在中国》:聚焦自杀干预行动,以数据新闻形式展现。一本神经论《数读舆情|“仝卓应届生造假”事件》:运用数据可视化,全面分析舆情事件。

    2025年03月16日
    19

发表回复

本站作者后才能评论

评论列表(4条)

  • 殷新红
    殷新红 2025年05月03日

    我是空气号的签约作者“殷新红”!

  • 殷新红
    殷新红 2025年05月03日

    希望本篇文章《深入浅出windows驱动开发的目录_1》能对你有所帮助!

  • 殷新红
    殷新红 2025年05月03日

    本站[空气号]内容主要涵盖:国足,欧洲杯,世界杯,篮球,欧冠,亚冠,英超,足球,综合体育

  • 殷新红
    殷新红 2025年05月03日

    本文概览:网上科普有关“深入浅出windows驱动开发的目录”话题很是火热,小编也是针对深入浅出windows驱动开发的目录寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临...