驱动开发教程,驱动开发教程2021

http://www.itjxue.com  2023-01-20 01:08  来源:未知  点击次数: 

如何正确入门Windows系统驱动开发领域

[序言]

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

[本内容适用环境及工具]

1 Windows系统下

2 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 认真阅读我提供的参考书籍

2 多使用Google来解决你遇到的问题

3 多尝试用驱动写你自己喜欢的功能

4 提升你英文阅读能力,因为大部分有价值的资料来自于国外

5 不要急于求成,不要浮躁,不要把驱动开发技术当做一种炫耀

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

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

如何学习wince驱动开发

嘿嘿,我也不用做重复性工作了! 可惜我只懂点wince驱动的皮毛,对linux驱动是一无所知。所以我就写点关于wince方面的了。 我记得我wince的旅程是从bootloader开始的,我觉得这是好的路线。为什么?因为bootloader是裸奔的,比OS简单很多,尤其是ADS 下的bootloader,几乎和以前的单片机程序没有多大的区别,只是ARM多了一些牛B的硬件,MMU和cache。还有bootloader几乎包含了ARM的所有硬件的运用代码,这样学完ARM bootloader之后,就可以对ARM的硬件有所了解了,这是驱动工程师的必备基础。到了bootloader最后,还有启动内核函数,这个就有意思了,一路看下去,会了解蛮多的基础,我觉得这方便并不难,只要学过单片机的人都能在较短时间内看懂的。我当时是看优龙的ADS bootloader的,不过后来PB环境的stepstone、eboot 我都看过。个人觉得ADS bootloader较容易懂,也可以使用仿真器,非常好用,推荐初学者看优龙的bootloader作为入门。尝试移植到自己的平台上就成功了。 我觉得bootloader要看三个月左右,慢慢体会,顺便看看MMU 、cache的原理,这样就会有很好的效果了。 三个月之后,就开始wince驱动旅程了。 首先,熟悉使用PB的开发环境,我推荐PB5.0,因为它很好操作,很直观,帮助文档也做的人性化。有些同志们一上来就想搞比较新的wince6.0,我个人认为这样未必会对我们有利,新的东西资料少,交流的人少,就会阻碍我们学习的进度。嘿嘿,只要买了开发板,PB的基础使用都会有的,至于更加高级的用法,会在以后慢慢体会到。 然后就开始流驱动了,掌握流驱动的写法:注册表啊,dirs啊,sources啊都要懂,市面上很少人写这么详细的教程,不过我们可以拿个驱动来看照着画葫芦就可以学会了。尝试写个GPIO驱动,并且用EVC或者VS2005写个C++ MFC程序写个应用来测试,嘿嘿,这样,我们就入门了。更加高级的流驱动方法,我博客中有介绍,只要到了一定程度,就会越来越多高级的技巧了。 再然后,就开始本机驱动了,LCD,键盘等都是这类驱动,学习这类驱动,一般是MDD+PDD结构,并且使用大量的C++代码,嘿嘿,所以C++不行,很难提高wince驱动水平的,俺就在这关卡住了,要努力哦。还有调试本机驱动,使用KITL是上上之策,具体使用方法,请看我的博客吧。 最后掌握一些高级的东西吧,文件系统,电源管理等,这是最难调试的,如果掌握了流程,最好把代码搬到BSP下进行加信息调试即可。嘿嘿我正在这步努力中。 差不多就是这么多了,最后预祝大家都能快速学好! 附言:学习一样东西和专业蛮大关系的,不过计算机专业未必比电子专业好,因为电子专业也学了不少单片机,微机原理之类的课程,所以大家都不要妄自菲薄,各有优缺点的,我们完全可以克服的。

(责任编辑:IT教学网)

更多

推荐其他源码文章