导航:首页 > 文档加密 > windows驱动开发详解pdf

windows驱动开发详解pdf

发布时间:2022-10-03 06:20:44

1. Windows设备驱动程序WDF开发的前言

Windows设备驱动程序,过去是WDM(Windows Driver Model)框架,编程复杂,初学者难以掌握其编程要领。为了解决这一问题,微软对WDM驱动程序的架构做了改进,形成了全新的WDF(Windows Driver Foundation)框架结构。它提供了面向对象和事件驱动的驱动程序开发框架,大大降低了开发难度。从现在开始,掌握Windows设备驱动程序的开发人员,由过去的“专业”人士,将变为“普通”大众。
WDF驱动程序包括两个类型,一个是内核级的,称为KMDF(Kernel-Mode Driver Framework),为SYS文件;另一个是用户级的,称为UMDF(User-Mode Driver Framework),为DLL文件。
内核模式驱动程序:这类驱动程序作为内核模式操作系统组件的一部分执行,它们管理I/O、即插即用、内存、进程和线程、安全等。内核模式驱动程序通常为分层结构。
用户模式驱动程序:这类驱动程序通常提供 Win32 应用程序与内核模式驱动程序或其他操作系统组件之间的接口。用户模式驱动程序支持基于协议或基于串行总线(如摄像机和便携音乐播放器)的设备。
WDF的运行平台有:Microsoft Windows Server® 2008、Microsoft Windows Vista、Microsoft Windows Server® 2003、Microsoft Windows XP、Microsoft Windows 2000 (KMDF only)。

2. Windows设备驱动程序WDF开发的本书内容

本书主要讨论KMDF,KMDF是WDM的继续,可以把WDM驱动程序转换为KMDF驱动程序。还对UMDF设备驱动程序作了编程入门介绍。
过去,我研究过如何用DriverStudio开发工具开发Windows下的WDM设备驱动程序,承蒙电子工业出版社的厚爱,出版了《Windows 2000/XP WDM设备驱动程序开发》一书。
WDF的简单化编程,导致DriverStudio退出了Windows设备驱动程序的开发,将DriverStudio定格在3.2版本。
从形式上看,KMDF的对象和DriverStudio的类,具有相似的地方。本书的内容安排和《Windows 2000/XP WDM设备驱动程序开发》的基本一致,具体安排如下:
章 名 主 要 内 容
第1章 Windows 2000和WDM驱动程序 KMDF是WDM的继续,KMDF构建在WDM之上。对于一些Windows驱动程序的基本概念,初学者仍需要了解,如Windows 2000中的组件、驱动程序种类,以及WDM驱动程序特点等
第2章 KMDF驱动程序框架 KMDF驱动程序框架由对象和事件回调例程构成。KMDF框架中所有的事物都由对象来表示,各种事件处理都由事件回调例程来完成。学习KMDF编程,主要是学习KMDF的各种对象、对象函数和事件回调例程的编程
第3章 基本对象 KMDF提供了许多对象,本章只介绍一些基本的对象,如WDFREQUEST对象、WDFQUEUE对象等,还介绍了数据同步访问、字符串操作和QueueSample实例
第4章 KMDF驱动程序编程入门 介绍Windows Vista下的KMDF驱动程序编程入门,包括KMDF驱动程序编程环境的建立,KMDF的创建、生成及安装过程,以及Win32 Console和MFC两种应用程序的编程
第5章 KMDF驱动程序和应用程序之间的通信 介绍应用程序与KMDF之间的通信,包括应用程序对KMDF的通信,以及KMDF对应用程序的通信
第6章 即插即用例程 主要介绍PnP组件、即插即用例程的加载和卸载顺序及PnpPowerSample实例等
第7章 电源管理 主要介绍系统电源状态与设备电源状态、电源管理控制标志位、设备的唤醒特征和空闲检测、电源管理编程及IdleSample实例等
第8章 KMDF过滤器驱动程序 描述如何写一个过滤器驱动程序,该驱动程序可位于功能驱动程序的上面或下面,它通过过滤流经它的IRP来修改设备的行为
第9章 USB设备开发 主要介绍USB设备的配置/接口/端点、USB数据的传输方式、USB描述符、USB编程对象、USB编程(如激活配置与中止配置、同步操作、异步操作)及USBSample实例等
第10章 PCI设备驱动程序开发 本章就硬件访问、中断处理和DMA传输3个方面展开讨论,并以CY7C09449芯片为例,给出一个经过测试的PCI设备驱动程序实例——PCISample实例。另外,还给出了一个不依靠硬件设备的DMASample实例
第11章 UMDF驱动程序编程入门 介绍UMDF驱动程序编程入门,包括UMDF驱动程序的创建、生成及安装,以及一个简单的实例编程
第12章 WinDbg使用介绍 WinDbg是微软提供的一个功能非常强大的调试软件,可以在源代码级别调试Windows下的WDF驱动程序。本章主要介绍用WinDbg调试KMDF和UMDF
微软推荐的WDF书籍是《Developing Drivers with the Microsoft Windows Driver Foundation》,作者是Penny Orwick和Guy Smith。
微软提供的学习WDF的中文网站地址是:www. microsoft. com/china/whdc。
开发工具
微软提供的WDF驱动程序开发工具包WDK的最新版本是WDK 1.7,可以从其网站下载。
本书实现WDF驱动程序及应用程序实例所用的工具是:Visual C++ 6.0和WDK 1.7。
本书配套光盘
本书配套光盘中含有书中所有实例的驱动程序和应用程序的全部源代码,以及生成的驱动程序和可执行的应用程序。除USBSample和PCISample实例因需要硬件设备的支持,读者无法运行外,其他11个实例均可在Windows XP和Vista下运行。
本书特点
编程入门:详细的步骤介绍,初学者的良师益友。
应用实例:对程序作了必要的注释,了解驱动程序编程的捷径。
简单实用:KMDF的编程非常简单,Winows硬件开发工程师必须掌握。
理解深刻:笔者精通Winows设备驱动程序开发和硬件开发,所有实例均为自己创造,每个实例都有其独特意义,笔者用实例诠释自己对KMDF的理解和认识。
微软推荐的WDF书籍是“理论派”,以讲解理论为主,讲得非常详细和全面;本书是“实战派”,全书以实例为主,用实例带你快速入门。
善于学习,勤于思考,勇于实践。用这句话与投身硬件开发的青年学子共勉。
希望这本书能对您现在或将来的工作有所帮助。
本书得以顺利出版,要特别感谢周利莉的一贯支持;感谢何海洋和赵庆花的支持;感谢陈建波和何亚垒的支持;感谢朱沭红编辑和电子工业出版社。
由于作者的理论水平有限,书中难免出现差错和遗漏,敬请广大计算机应用开发人员批评指正,
十年时间,跟踪Windows设备驱动程序的开发,驱动程序VxD->WDM->KMDF,工具VtoolsD->DDK、DriverWorks->WDK,但愿WDF长久。别了WDM,别了DriverStudio。
缺月挂疏桐,漏断人初静。谁见幽人独往来,缥缈孤鸿影。……
武安河
2009年元旦

3. <<Windows驱动开发技术详解>>哪里有完整的电子书

http://dl3.csdn.net/fd.php?i=95896923493636&s=

这可是我用CSDN上的6分换的
如果不行,你直接去那上面下

http://download.csdn.net/source/692349

4. 如何开发Windows NT设备驱动程序

一、开发工具
1,虚拟机和操作系统
本人使用的win10操作系统,并安装了“VMware Station11”,在虚拟机中暂时只安装了一个“win7 x64”操作系统,后续将安装一个win10虚拟机系统。一般情况下,我都是在虚拟机操作进行驱动的安装和调试,这样可以防止将本机的操作系统弄乱。
后续将尝试“通过本机winDbg来调试虚拟机中的驱动”。这是一个比较高级的调试方法,点击打开链接。
2,开发工具
本人主要使用“WDK7600”(点击打开链接)和"VS2015+wdk10"(点击打开链接)。我把前者安装在“win7 X64”虚拟机中安装,把后者安装在本机和实验室电脑上。由于我使用的教材《Windows驱动开发详解》和学习博客都是用wdk7这个版本开发,为了环境一致,故选择了在虚拟机上试验这些教材上的示例代码。
关于wdk7,参考博客:点击打开链接。
关于“VS2015+wdk10”,需要在win10系统下,先安装VS2015,再安装wdk10,此外还要安装VS2015的update。(winDbg集成到了wdk10下,路径:C:\Program Files (x86)\Windows Kits\10\Debuggers\x64)。
注意事项:
1)VS2015默认安装,是不安装c++和sdk的,需要选择自定义安装;
2)如果已经默认安装了,这个时候再安装wdk10,会给出警告;
3)此时,可以选择先用VS2015新建一个c++项目,然后会提示你安装c++部分的模块;
4)安装好后,就可以正常安装wdk10了,如果wdk10安装好后,还有编译问题,也需要先去VS下看看是否却c++相关模块,并按上述3安装完整。
另一个需要注意的是,编译报“Inf2Cat error -2: "Inf2Cat, signability test failed. "Double click to see the tool output”,
参考博客:点击打开链接
是因为inf文件的“DriverVer”的时间不对,VS2015默认的“Inf2cat”中的时间为UTF,需要在工程属性-》“inf2cat”选择中,将local时间打开。
3,调试工具
1)debugview
在驱动程序中,调用KdPrint函数(类似C语言中printf),然后通过debugview查看打印信息。这是最常用的一种调试方法。
需要注意的是:首先要在“capture”菜单中勾选“kernel”相关的选项,表示抓取内核的信息。然后,需要使用“管理员身份”运行该软件。Debugview在win10下经常报错:

需要到“C:\Windows\System32\drivers”中找到“dbgv.sys”,删除它,再使用“管理员身份”运行该软件。
2)

4,调试手段
1)驱动安装阶段,可以到“C:\Windows\System32\drivers”目录下看相应的“sys”文件是否到位。
2)cmd->regedit打开注册表,再在“编辑”菜单下“查找”对应的设备信息。
3)使用KdPrint函数打印log和DebugView软件抓取log(最常用的手段);
4)在驱动代码中写log文件(理论上可行,待探索);
5)存储mp信息。所谓mp信息,就是在系统奔溃之前,操作系统会将当前的调用堆栈记录成一个mp文件。(详细设置系统转存mp信息,可以参考《Windows驱动开发技术详解》最后一章,或博客:点击打开链接)。设置好mp文件后,遇到蓝屏,再将mp文件放到WinDbg中查看,这也是一个中常用的调试手段。
6)IRPTrace,这个软件可以跟踪IRP,但是win7及后续版本都不可用,可以尝试自己写程序跟踪。
7)PCITree,查看设备挂载;
8)WinObject,查看驱动中的各种对象信息。
9)WinDbg调试虚拟机,这是一个高级应用。配合VS2015可以查看“内存”、“调用堆栈”、“线程”和“反汇编”。
注:在驱动的开发过程,需要逐渐掌握各种工具和调试手段。

二、开发框架
从我最近的浏览的资料来看,Windows驱动程序大致有三种类型:NT驱动、WDM驱动和WDF驱动。其中,NT驱动是非即插即用(Plug-in-and-Play,PNP)式的,它是一项系统服务,目前的设备类驱动大都不是这种类型,不是我的关注点,后面将不展开介绍。WDM驱动和WDF驱动都是即插即用的驱动,后者是前者的升级版。
1,WDM框架
WDM是早前的Windows驱动开发框架,虽然现在微软推荐用WDF,但是,学习WDM一是能够更对地了解操作系统的内部机制(WDF是对WDM更高层次的封装),二是《Windows驱动开发技术详解》以及网上的很多博文都是用的WDM,从学习角度出发也需要掌握一定的WDM知识。
WDM框架的基本知识,可以参考博文:点击打开链接。后续我也用单独的博文来讲解这方面的内容,主要包括:
1)驱动对象与设备对象(DriverObject vs Device Object);
2)物理设备对象(PDO)和功能设备对象(FDO);
3)驱动的层次结构:水平层次(eg:FDO之间)和垂直层次(FDO到PDO);
4)入口函数(DriverEntry);
5)设备扩展(DRIVER_EXTENSION);
6)重要的例程(routine):AddDevice
7)IRP机制(I/O Request Package):MajorFunction(MJ))和MinorFunction(MN);

2,WDF框架
对于WDF框架,可以参考《Window7设备驱动开发》这本书。WDF框架可以分为KMDF(Kernel Model Driver Frame)和UMDF(User Model Driver Frame),其驱动模型如下:
1)WDF对象(属性、方法和事件);
2)即插即用和电源管理的集成;
3)集成的I/O排队和取消(queue);
4)I/O模型。在Windows中,IRP的功能不仅仅是向驱动程序提供传统的I/O请求(读、写、创建等)。它是操作系统和驱动程序、驱动程序和驱动程序之间一种基于数据包的通信机制。

3,一个典型的KMDF驱动程序
通过VS2015新建一个项目,选择“KMDF”,它会产生如下文件:

1)public.h中定义GUID和CTL_CODE,并提供给应用程序使用;
2)trace.h定义的调试宏和函数,暂不关注;
3)driver.h和driver.c定义了主要的框架代码。包括:入口函数(DriverEntry)、加载设备的例程(KMDFDriver1EvtDeviceAdd)和清理上下文区的函数。该文件都是框架性的代码,在驱动开发的过程中,可以选择一个框架,选定框架后,一般不在该文件中添加功能,而是放到“device.c”和“queue.c”。
4)device.h和device.c,主要处理设备相关的功能,与设备交互的实现放在该文件中。主要包括设备初始化和资源释放;
5)queue.h和queue.c,主要处理IRP,包括KMDFDriver1EvtIoDeviceControl;

5. 《Linux设备驱动开发详解基于最新的Linux4.0内核》pdf下载在线阅读,求百度网盘云资源

《Linux设备驱动开发详解》(宋宝华)电子书网盘下载免费在线阅读

资源链接:

链接:https://pan..com/s/1ddjTHycqTk3yYQDr-raoKw

提取码:evup

书名:Linux设备驱动开发详解

作者:宋宝华

豆瓣评分:6.5

出版社:机械工业出版社

出版年份:2015-8

页数:618

内容简介:

对于嵌入式工程师来说,进入更高阶段后,学习Linux设备驱动开发无疑就是职业生涯的一次“重生”。这是因为Linux设备驱动开发不仅仅涉及操作系统的转换,开发方式的转换,更重要的是思维上的转变。对于Linux这样一个复杂系统,如何从复杂的代码中抓住设备驱动开发的关键是任何一个Linux设备驱动开发者入门时需要面对的挑战。除了知识、工具之外,往往还需要思路上的指导。本书不但帮助Linux设备驱动开发的初学者厘清必要的概念,还从具体的实例、设备驱动开发的指导原则循序渐进地引导读者渐入学习佳境。为了让读者能够达到Linux设备驱动开发的至臻境界,作者更是从软件工程的角度抽象出设备驱动开发的一般思想。毫无疑问,本书将成为读者学习Linux设备驱动开发过程中的一座“灯塔”。

作者简介:

宋宝华,

Linux布道者,知名嵌入式系统专家,《Essential Linux Device Drivers》译者。作为最早从事Linux内核与设备驱动研究的专家之一,他在众多国内外知名企业开展Linux技术培训。他也是一位活跃的Linux开发者和深度实践者,为Linux官方内核贡献了大量的Linux源码并承担代码审核工作。至今已向Linux官方内核提交逾数万行代码和几百个补丁。他的《Linux设备驱动开发详解》系列书在嵌入式Linux开发者中有口皆碑,是众多Linux书籍中为数不多的畅销书。

6. 《Linux设备驱动开发详解4.0》pdf下载在线阅读全文,求百度网盘云资源

《Linux设备驱动开发详解4.0》网络网盘pdf最新全集下载:
链接: https://pan..com/s/1wxaYK87l11FDur15aS6FTQ

?pwd=kn9d 提取码: kn9d
简介:Linux设备驱动开发详解介绍了Linux设备驱动开发理论、框架与实例,详细说明了自旋锁、信号量、完成量、中断顶/底半部、定时器、内存和I/O映射以及异步通知、阻塞I/O、非阻塞I/O等Linux设备驱动理论,以及字符设备、块设备、tty设备、I2c设备、LCD设备、音频设备、USB设备、网络设备、PCI设备等Linux设备驱动架构中各个复杂数据结构和函数的关系,并讲解了Linux驱动开发的大量实例,使读者能够独立开发各类Linux设备驱动。

7. VC驱动编程

推荐几本
《天书夜读-从汇编语言到windows内核编程》
《寒江独钓-windows内核安全编程》
《Windows驱动开发技术详解》

网上都有pdf版本的,你可以到verycd上或者其他地方搜索的到下载地址

8. 深入浅出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

9. windows 驱动开发---IrpTrace 的使用

你可以到网上下个教程嘛.

10. 怎样从零开始学习WINDOWS下的驱动开发

对于初学者,我们需要一个简单的例子,就和C语言里面的HelloWorld一样,编译运行,接着打印出"Hello world!"。我们要先建立起对WDF驱动的一个初步而强烈的感性认识,然后再对照着例子来学习WDF的概念,看它的代码是怎么实现的,这样就会有深刻的认识。这就是教育学上所谓的循序渐进。按照这个思路,我们就先要编译安装运行一个简单驱动程序例子。我浏览了下WDF的例子之后,发现Echo这个例子比较适合我们的这个思路。下面就开始编译、安装和运行Echo这个例子。我是在XP下面做的实验,如果在其他操作系统下,也类似。在开始试验之前,读者可以从微软的网站下载WDK开发包,大小约700Mbytes,需要耐心地下才能下完。

阅读全文

与windows驱动开发详解pdf相关的资料

热点内容
旧的安卓线叫什么 浏览:859
台湾红羊公司出品的电影 浏览:102
红颜玫瑰花双女主免费阅读 浏览:238
小说傻柱原着txt 浏览:967
周香允演的女上市是哪部电影 浏览:423
单片机异步通信数据格式 浏览:13
argon2d算法的币 浏览:50
世界上最简单的解压神器 浏览:566
一人之下小说txt全文 浏览:584
.超大尺度男男电影 浏览:396
无法找到加密狗将进入演示模式 浏览:134
韩国李彩谭主演的电影 浏览:560
redisphp管理 浏览:958
被人切掉蛋蛋电影 浏览:894
美国最新女机器人电影 浏览:22
万达电影院用英语怎么说 浏览:123
伊朗人购买加密货币 浏览:373
杭州哪儿找程序员 浏览:268
警察卧底监狱韩国电影叫什么电影 浏览:607
app激活小米移动网络连接到服务器地址 浏览:84