windows驱动开发学习

序言] 
很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资
料少有关系.大多学的驱动开发资料都以英文为主,这样让很多驱动初学者很头疼.本人从
事驱动开发时间不长也不短,大概也就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://www.mzph.cn/news/509363.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Springmvc架构详解

框架结构 框架结构如下图&#xff1a; 架构流程 1、 用户发送请求至前端控制器DispatcherServlet 2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、 处理器映射器根据请求url找到具体的处理器&#xff0c;生成处理器对象及处理器拦截器(如果有则生成)一…

区间覆盖问题

用i来表示x坐标轴上坐标为[i-1&#xff0c;i]的长度为1的区间&#xff0c;并给出n&#xff08;1≤n≤200&#xff09;个不同的整数&#xff0c;表示n个这样的区间。 现在要求画m条线段覆盖住所有的区间&#xff0c;条件是&#xff1a;每条线段可以任意长&#xff0c;但是要求所…

Windows驱动开发如何入门

http://blog.csdn.net/charlessimonyi/article/details/50904854 http://blog.csdn.net/charlessimonyi/article/details/50904956

springmvc整合mybatis之准备阶段与文件配置

文章出处&#xff1a;课程资料 web.xml等配置文件的解释&#xff1a;打开博客 为了更好的学习 springmvc和mybatis整合开发的方法&#xff0c;需要将springmvc和mybatis进行整合。 整合目标&#xff1a;控制层采用springmvc、持久层使用mybatis实现。 步骤详解&#xff1a; …

悼念512汶川大地震遇难同胞

Problem Description 时间&#xff1a;2008年5月16日&#xff08;震后第4天&#xff09; 地点&#xff1a;汶川县牛脑寨人物&#xff1a;羌族老奶奶【转载整理】牛脑寨是一个全村600多人的羌族寨子&#xff0c;震后几天&#xff0c;这里依然能常常听到隆隆的声音&#xff0c;那…

Win10下VS2015(WDK10)驱动开发环境配置

1、 概述 微软在”WDK7600“以后就不再提供独立的内核驱动开发包了&#xff0c;而是必须首先安装微软集成开发环境VisualStudio&#xff0c;然后再从微软官网下载集成的WDK开发包、或者离线安装包&#xff0c;但是安装后Visual Studio就集驱动程序开发&#xff0c;编译&…

懒虫小鑫

roblem Description 小鑫是个大懒虫&#xff0c;但是这一天妈妈要小鑫去山上搬些矿石去城里卖以补贴家用。小鑫十分的不开心。不开心归不开心&#xff0c;小鑫还是要做这件事情的。我们把这个事情简化一下。有n块矿石&#xff0c;设第i块矿石由两个数字wi和pi表示。分别表示这块…

springmvc与mybatis整合之实现商品列表

需求 实现商品查询列表&#xff0c;从mysql数据库查询商 品信息。. DAO开发 使用逆向工程&#xff0c;生成代码 注意修改逆向工程的配置文件 ItemService接口 public interface ItemService {/*** 查询商品列表* * return*/List<Item> queryItemList();}. ItemServi…

中断处理程序与中断服务例程

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 目录(?)[-] 1 什么是中断2中断处理程序3中断服务例程4request_irq函数分析 1. 什么是中断 简单来说中断就是硬件设备与处理器的一种交流方式&#xff0c;比如当我按下一个键时&#xff0c;只有当处…

Windows驱动程序开发语言

Windows驱动程序和Win32应用程序一样&#xff0c;都是PE格式&#xff0c;所以说&#xff0c;只要某种语言的编译器能够编译出PE格式的二进制格式文件&#xff0c;并且能够设置驱动程序的入口地址&#xff0c;那么这种语言就可以用来开发Windows驱动程序&#xff0c;所以可以选择…

java 正则表达式 手机号 邮箱(转载)

转载地址&#xff1a;https://www.cnblogs.com/go4mi/p/6426215.html package com.modules.plateform.tool;import java.util.regex.Pattern; /*** 账户相关属性验证工具**/ public class AccountValidatorUtil {/*** 正则表达式&#xff1a;验证用户名*/public static final …

商人小鑫

Problem Description 小鑫是个商人&#xff0c;当然商人最希望的就是多赚钱&#xff0c;小鑫也一样。 这天&#xff0c;他来到了一个遥远的国度。那里有着n件商品&#xff0c;对于第i件商品需要付出ci的价钱才能得到。当然&#xff0c;对于第i件商品&#xff0c;小鑫在自己心中…

Windows驱动程序调用约定

调用约定是指在函数进行调用的时候&#xff0c;会根据不同的调用规则&#xff0c;翻译成不同的汇编代码。不同的调用约定&#xff0c;会有不同的参数的入参顺序&#xff0c;和调用堆栈的处理方式。比较常用的分为C语言调用约定_cdecl&#xff0c;和标准调用约定_stdcall. Wind…

装船问题

Problem Description 王小二毕业后从事船运规划工作&#xff0c;吉祥号货轮的最大载重量为M吨&#xff0c;有10种货物可以装船。第i种货物有wi吨&#xff0c;总价值是pi。王小二的任务是从10种货物中挑选若干吨上船&#xff0c;在满足货物总重量小于等于M的前提下&#xff0c;运…

获得Class引用的三种方式?Class.forName()、getClass以及.class的使用

上代码!!! package com.spring.partise;class A{static{System.out.println("I am A");} } public class helllo {public static void main(String[] args) throws Exception {System.out.println("------------得到Class对象的两种方式---------------")…

Windows驱动程序运行时函数的调用

编译器厂商一般在发布其编译器的时候&#xff0c;会连同运行时函数一同发布。Windows驱动程序不能再代码中使用编译器提供的运行时函数&#xff0c;因为大部分运行时函数是基于Win32 API实现的&#xff0c;由于Win 32 API运行在用户模式&#xff08;RIng3层&#xff09;&#x…

活动选择问题

Problem Description sdut 大学生艺术中心每天都有n个活动申请举办&#xff0c;但是为了举办更多的活动&#xff0c;必须要放弃一些活动&#xff0c;求出每天最多能举办多少活动。Input 输入包括多组输入&#xff0c;每组输入第一行为申请的活动数n(n<100)&#xff0c;从第2…

java加载类时静态代码块、构造代码块、构造方法执行顺序

构造代码块作用&#xff1a;https://blog.csdn.net/hspingcc/article/details/54893853 package com.spring.partise;class A{A(){System.out.println("无参构造方法");}A(String str){System.out.println("带参数构造方法");}static{System.out.println(…

为什么可以通过类名调用静态方法?

JVM加载类&#xff1a; 所有的类都是在对其第一次使用时&#xff0c;动态加载到JVM中的。当程序创建第一个类的静态成员的引用时&#xff0c;就会加载这个类&#xff0c;进而可以得到该类的类型信息&#xff0c;而类型信息可以在程序运行时发现和使用类型信息。这个证明构造器…

小鑫去爬山

Problem Description 马上就要放假了&#xff0c;小鑫打算去爬山。 小鑫要去爬的这座山有n个海拔区间。为了清楚描述我们可以从上到下标号1到n。第i个区间有i个落脚点&#xff0c;每一个落脚点都有一个危险值。小鑫需要在第n个海拔区间挑选一个点向上爬&#xff0c;爬到第1个海…