windows驱动开发推荐书籍

[作者] 猪头三 
个人网站 :http://www.x86asm.com/

[序言] 
很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资
料少有关系.大多学的驱动开发资料都以英文为主,这样让很多驱动初学者很头疼.本人从
事驱动开发时间不长也不短,大概也就3~4年时间.大多数人都认为会驱动开发的都是牛人,
高手之类的.其实高手,牛人不是这样定义的.我们在学习驱动开发之前,一定要明白一个道
理:术业有专攻,不要盲目跟风.

[贡献者] 
1> defddr 看雪学院 
2> StudyRush 看雪学院

[本内容适用环境及工具] 
1> Windows系统下 
2> VC6.0以及VS2003版本以上 
3> Windows驱动开发包(DDK(老版本) WDK(新版本)) 
4> 有能力着可以安装VMWare

[本内容适用群体] 
1> 具有C/C++语言基础的人 
2> 具有80x86汇编基础的人 
3> 具备高中以上文化水平的逻辑思维

[具备Windows系统理论书籍] 
1> Windows核心编程 
2> Win32多线程程序设计 
3> 深入解析Windows操作系统 
4> Windows操作系统原理

FAQ1:为什么需要[具备Windows系统理论书籍]这4本书? 
答:驱动是Windows系统的一个重要的组成部分,深入Windows系统核心的一个体系,就
因为驱动跟系统内核联系得十分紧密,所以涉及了不少系统的基础理论以及原理.因此在学
习驱动开发之前必须先明白Windows 系统的基础开发理论,Windows系统的运作原
理,Windows系统的架构体系.那么我提供的上面4本书是目前市面上我认为最经典最全面
的书籍了.

[具备Windows驱动开发书籍] 
1> Windows驱动开发详解 
2> Windows设备驱动程序WDF开发

FAQ2:为什么需要[具备Windows驱动开发书籍]这2本书? 
答:假设你对Windows系统的基础理论扎实了,也看完了所说的[Windows系统理论书籍]
这4本书,而且你还从事开发过Windows程序或者大程序的经验者.那么你进入Windows
驱动开发的时候,需要一本经典的驱动入门开发书籍即可正确入门.现在我提供了
[Windows驱动开发书籍]这2本书完完全全针对Windows驱动开发入门而编写的书籍.
当然我首要推荐<Windows驱动开发详解>这本书.本书的内容在目前来说,针对驱动开发
的讲解时非常到位了.包含了驱动开发理论 配置 驱动体系 等等......是一本不可多得
的好书.那么第2本,其实有点滥竽充数,但是他里面有少少涉及到WDF这个最新的驱动开
发理论的讲解,大家也就凑合着吧.

[具备Windows调试基础理论书籍] 
1> 软件调试 
2> Windows用户态程序高效排错

FAQ3:为什么需要[具备Windows调试基础理论书籍]这2本书? 
答:在开发驱动的情况下,你少不了要调试驱动程序.那么如何调试驱动程序呢? Windows
已为你考虑到这个问题了并开发了一套强有力的调试工具:Windbg .如何学习这个工具的
调试呢?那么现在市面上只有这2本书针对Windbg讲解得还比较到位,至少针对调试命令
的使用,已经用中文讲解了,大家可以通过2本书先大概了解Windbg的调试命令,然后再进
一步进行GOOGLE搜索并深入学习.

[具备汇编基础理论书籍] 
1> 汇编语言 作者:王爽 
2> 80x86汇编语言程序设计教程[绿皮版 或者 黑皮版]

FAQ4:为什么需要[具备汇编基础理论书籍]这2本书? 
答:由于在Windows环境下开发驱动,从而有个弊端,就是Windows的WDK,DDK文档少得
可怜,很多说明多是模糊的.因此导致我们开发的驱动极其不稳定,这时就需要逆向
Windows驱动的机制来加深理解.在一个由于驱动的不稳定性,会导致系统蓝屏,有时错误
并不会直接定位到你的代码,这时就需要汇编来分析错误的缘由.就如我前面介绍的[具备
Windows调试基础理论书籍] 基本是用汇编语言来阐述调试技术.

[驱动开发扩展书籍] 
1> 寒江独钓-Windows内核安全编程 
2> Windows内核原理与实现 
3> Rootkit Windows内核安全防范 
4> Windows内核情景分析

FAQ5:为什么需要[驱动开发扩展书籍]这4本书? 
答:熟话说:学无止境,驱动开发领域是一个很庞大的体系,这归根于驱动框架多样化而决定
的.驱动包含了:文件驱动,磁盘驱动,显卡驱动,网络驱动,等等不同的种类,每一种类就是
一个领域,你决定你的能力需要扩展到多方面,那么你可以考虑先我这里提供的这4本书来
学习,通过阅读这3本书,你会发现驱动可以做很多你意想不到的事情.本人从事开发驱动
将近4年,也仅仅涉及 文件驱动,磁盘驱动以及一些小型驱动而已.这些的学习我也仅仅是
根据需求来进行选择性学习.每个人都有自己的能力极限,大家要量力而行.

备注:网友可以推荐其他好书

[推荐学习资源站点] 
1> http://forum.driverdevelop.com/ 国内唯一个知识点比较全的驱动交流网站 
2> http://www.osronline.com/ 国外著名的驱动开发社区 
3> http://www.microsoft.com/whdc/default.mspx 微软官方驱动开发技术支

[推荐正确学习方式] 
1> 认真阅读我提供的参考书籍 
2> 多使用Google来解决你遇到的问题 
3> 多尝试用驱动写你自己喜欢的功能 
4> 提升你英文阅读能力,因为大部分有价值的资料来自于国外 
5> 不要急于求成,不要浮躁,不要把驱动开发技术当做一种炫耀

http://blog.csdn.net/qing666888/article/details/50811764

时间: 2024-11-03 21:23:58

windows驱动开发推荐书籍的相关文章

【转】Windows驱动开发如何入门

1.http://blog.csdn.net/charlessimonyi/article/details/50904854 (2016年03月16日 14:55:36) 2. 搞Windows驱动开发是一件痛苦的事情,特别是初学Windows驱动开发.有的人觉得Windows驱动开发就是把开发包WDK下载下来,然后只要掌握了C/C++语言,接下来无非就是类库调来调去,像调用MFC.QT之类的库那样,看着书和MSDN上的文档来就行了.等真正接触以后才发现根本不是那么一回事,痛苦源于以下几点: 痛

Windows驱动开发(一)

笔者学习驱动编程是从两本书入门的.它们分别是<寒江独钓--内核安全编程>和<Windows驱动开发技术详解>.两本书分别从不同的角度介绍了驱动程序的制作方法. 在我理解,驱动程序可分为两类三种: 第一类:传统型驱动 传统型驱动的特点就是所有的IRP都需要自己去处理,自己实现针对不同IRP的派发函数.其可以分为以下两种: 1. Nt式驱动:此驱动通过注册系统服务来加载,并且不支持即插即用功能(即没有处理IRP_MJ_PNP这个IRP). 2. WDM驱动:此驱动不通过注册系统服务来加

Windows驱动开发基础(八)内存管理

Windows驱动开发基础系列,转载请标明出处:http://blog.csdn.net/ikerpeng/article/details/38826159 就32位的计算机来说,他有4G的真实的物理内存.但是这样是不够的,于是引入了虚拟内存的概念.使得每一个进程都有4G的虚拟内存. 虚拟内存实际上就是采用了一种映射的方式.4G的内存实际上被分页.一般来说一个页的大小是4K.也是说它被分为了1M个页.在这么多的页里面,有一部分是对应于物理内存的(可以是多对一的):有一部分是对应于磁盘上的空间,但

Windows驱动开发(中间层)

Windows驱动开发 一.前言 依据<Windows内核安全与驱动开发>及MSDN等网络质料进行学习开发. 二.初步环境 1.下载安装WDK7.1.0(WinDDK\7600.16385.1) 地址:https://msdn.microsoft.com/en-us/windows/hardware/hh852365 2.下载InstDrv软件(用于安装.启动.停止.卸载驱动) 界面如下: 注:srvinstw.exe 也可以安装.卸载sys文件,但需要手动开启.关闭,即在cmd命令窗口下执行

Windows 驱动开发 - 7

在<Windows 驱动开发 - 5>我们所说的读写操作在本篇实现. 在WDF中实现此功能主要为:EvtIoRead和EvtIoWrite. 首先,在EvtDeviceAdd设置以上两个回调事件. ioQueueConfig.EvtIoRead = EvtIoRead; ioQueueConfig.EvtIoWrite = EvtIoWrite; 然后,在EvtDevicePrepareHardware中获取WDFUSBPIPE并测试他. pDeviceContext->BulkRead

Windows 驱动开发 - 8

最后的一点开发工作:跟踪驱动. 一.驱动跟踪 1. 包含TMH头文件 #include "step5.tmh" 2. 初始化跟踪 在DriverEntry中初始化. WPP_INIT_TRACING( DriverObject, RegistryPath ); WDF_OBJECT_ATTRIBUTES_INIT(&attributes); attributes.EvtCleanupCallback = EvtDriverContextCleanup; (1) WPP跟踪初始化

Windows 驱动开发 - 1

上篇<Windows 驱动开发 - 基础2>已经介绍了windows大概的框架.那么使用WDF有那些的不同呢? 我们知道在WDF中,KMDF是必须的.而KMDF是架构在WDM之上的.  WDM驱动程序模型 在 WDM 驱动程序模型中,每个硬件设备至少有两个驱动程序.其中一个驱动程序我们称为功能(function)驱动程序,通常它就是你认为的那个硬件设备驱动程序.它了解使硬件工作的所有细节,负责初始化 I/O 操作,有责任处理 I/O 操作完成时所带来的中断事件,有责任为用户提供一种设备适合的控

Windows 驱动开发基础(九)内核函数

Windows 驱动开发基础系列,转载请标明出处:http://blog.csdn.net/ikerpeng/article/details/38849861 这里主要介绍3类Windows的内核函数:字符串处理函数,文件操作函数, 注册表读写函数.(这些函数都是运行时函数,所以都有Rtl字样) 1 字符串处理函数 首先驱动程序中,常用的字符串包括4种:CHAR (打印的时候注意小写%s), WCHAR(打印的时候注意大写%S), ANSI_STRING, UNICODE_STRING.后面两种

Windows 驱动开发 - 5

上篇<Windows 驱动开发 - 4>我们已经完成了硬件准备.但是我们还没有具体的数据操作,例如接收读写操作. 在WDF中进行此类操作前需要进行设备的IO控制,已保持数据的完整性. 我们知道进行WDF开发主要是跟随IRPs的"脚步". I/O Request Delivery Mechanism I/O request type UMDF delivery mechanism KMDF delivery mechanism Read Queue Queue Write Q