社区
新手乐园 帖子详情 驱动学习经验+历程!献给初学者!! hansiyuan123 2009-06-25 05:52:41 (首先我是冒着风险写的这篇日记,请大牛们看了不要带我家人出来,其次我介绍的是WDM驱动程序的学习过程!(不是具体的问题分析和解决!)不一定适合您的学习可能!仅以此文献给跟我一样的菜菜们!)
刚开始学习驱动程序开发的时候!尤其是直接学习WINDOWS驱动程序开发的时候!简直是对自己生命的一种摧残!
完全不同于用户模式程序的设计思想和铺天盖地的各种术语,硬件特性,操作系统结构和原理!足以使你到达崩溃的边缘!
当你可以独立的编写一个驱动程序的时候 BUG CHECK的死亡蓝屏,随时跟你有个甜蜜的约定!
最难能可贵的是国内没有一本能拿的出手的专业教材!很多国内的"高手"东拼西凑的COPY了不少国外教材的内容!然后如飞砖头一样砸到你头上!我是没有那么"硬"的头,所以接不住这些大牛们的著作!还是老样子,SEARCHING IN GOOGLE TO FIND A BEST BOOK FOR DRIVER DEVELOPMENT !终于我发现原来国外也就那么几本关于驱动开发的书!而且真正经典的就2本可能!还有一本不能完全说是经典!因为它的结构太散乱以至于到第8章不得不换书了!
虽然客观因素不是很好!但主观因素才是决定你能否成功的关键!我继续坚持,从最最最低层的设备开始学习!经常看到有些高手说初学驱动不要太关注低层细节!我不这么认为!我觉得低层细节能帮助你真正的掌握这门技术!
首先计算机组成原理是必修的课,接着来本操作系统概念!(这可能很多人都学过!但是你还是需要从新看尤其是最近几年的版本,尤其是关于WINDOWS的),如果有经历 INTEL处理器的结构最好也弄清楚!毕竟驱动开发跟处理器上下文的环境总能扯上关系!都学完了 你应该能玩玩硬件了!
下面是正题 PROGRAMMING THE MICROSOFT WINDOWS DRIVER MODE !!!什么你没听说过!那现在知道了!赶紧准备去吧!不用去买!没有,绝版的东西!这书的第2版 更好 更强大!!不过没有大牛们翻译呢!其实我想翻译来着!但我估计我翻译完了 第N 版都出了 而且败坏了这书的名声!(在此感谢一下 马大哥翻译了第一版!)
如果你上面的学习顺利,而且看过核心编程.那么你一直到I/O请求包这里都会一帆风顺,最最重要的东西将出现在这里 就是IRP的结构和各种处理历程.它是你完成驱动程序功能的灵魂!可以说你以前学的都是框架,只有这里是你需要根据你为不同硬件编写的不同功能的驱动程序自由发挥的地方,当然也是比较难理解的地方.
这里你可以到驱网多发发询问帖子!一定要搞清楚整个IRP从产生到消除的过程!以及都需要什么IRQL级别和同步方法!
然后你可以长驱直入什么PNP,什么读写数据,什么电源管理(这块又是一个难点,毕竟是重要的东西).其他的你应该不是问题如果你读了我推荐给你的参考读物!
都学完了你可能还是写不出来基本框架的驱动程序!别急,你可以看看WDK里面的帮助文档!和一些基本例子(这步我觉得也是关键,因为它能很好的帮助你理清驱动编程的整个思路).如果说以前的学习是细节,那么现在的过程就是把握整体!把所有细节填充到这个整体中,你的第一个驱动就可以出来了.至于以后的什么文件过滤驱动,什么网络驱动模型,轻车熟路吧!!
下面说说实践的过程,很多人在编写和调试的时候喜欢用VS+DDK+DS+SOFTICE的经典组合!很可惜我不喜欢这个组合,我喜欢直接设置VS+DDK+WINDBG或SOFTICE的组合,为什么不要DS.我个人觉得没这个必要多设置设置环境对你理解编译器有好处!
太多的细节问题可能我也没有意识到,所以希望热爱驱动编程和搞WINDOWS核心的朋友们一起探讨. 大家可以加我的群3244625.
Chris[..\]
2009.6 北京!
...全文
231 18 打赏 收藏 驱动学习经验+历程!献给初学者!! (首先我是冒着风险写的这篇日记,请大牛们看了不要带我家人出来,其次我介绍的是WDM驱动程序的学习过程!(不是具体的问题分析和解决!)不一定适合您的学习可能!仅以此文献给跟我一样的菜菜们!) 刚开始学习驱动程序开发的时候!尤其是直接学习WINDOWS驱动程序开发的时候!简直是对自己生命的一种摧残! 完全不同于用户模式程序的设计思想和铺天盖地的各种术语,硬件特性,操作系统结构和原理!足以使你到达崩溃的边缘! 当你可以独立的编写一个驱动程序的时候 BUG CHECK的死亡蓝屏,随时跟你有个甜蜜的约定! 复制链接
扫一扫 分享 转发到动态 举报 AI 作业
写回复 配置赞助广告取 消
确 定
用AI写文章 18 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 LeoHuang_bm 2010-03-09 打赏举报 回复 群满了的哇。。。lz升级会员的嘛,+我 (452054281) zhourenyun 2009-07-21 打赏举报 回复 经验不错。
不过驱动的几本书好像有好多本都不错。 gab2iel 2009-07-21 打赏举报 回复 欣赏中~~ beuady 2009-07-21 打赏举报 回复 欣赏中 slblake 2009-07-21 打赏举报 回复 mark peng00 2009-07-21 打赏举报 回复 欣赏 xinangirl 2009-07-20 打赏举报 回复 太深了 flamingo_oasis_ 2009-07-08 打赏举报 回复 我今年三月开始学习的驱动,原因我想自己做一个U盘,我从网上下了几本书,比较后发现有两本国外书很好,没办法从头肯吧。
由于要工作,只能晚上看,两本交叉看了,一个月,对概念熟悉了。就开始重点结合看USB代码的部分。知道了整体流程。随后开始用VC2005
搭建DDK环境,编译例子,搞了几天,编译USB驱动。又开始编译控制台程序,也搞好了。我手头有个S3C2410开发板,我就想用它做个U盘,
开始写程序,用ADS1.2 写的。由于觉得U盘不好搞,就想先开发一个假想USB设备,验证上面驱动,搞了一段,开始系统很难识别设备,
后来解决了,设备识别后,装上驱动,用控制台,进行通信,一切都OK。接着就开始开发U盘,现在U盘也成功了。我觉得驱动就得坚持时间,
困难都会克服的。我大概用了三个月,上边的工作。期间还要学习其它。 ajdgymyd 2009-07-02 打赏举报 回复 UP lihan6415151528 2009-07-02 打赏举报 回复 学习楼主这种精神! zhangxuyu1118 2009-07-02 打赏举报 回复 怎么没提到BUSHOND... huangchen4444 2009-07-02 打赏举报 回复 o(╯□╰)o。。。群满了。。。 jeff_nie 2009-06-30 打赏举报 回复 学完这些,就一科学家了 GaA_Ra 2009-06-28 打赏举报 回复 呃,很想学驱动.精力有限啊... Walf_ghoul 2009-06-28 打赏举报 回复 mark 玫瑰刺伤指尖Evllis 2009-06-28 打赏举报 回复 呵呵,写得很有感觉,我喜欢。支持一下。 GuiKai 2009-06-27 打赏举报 回复 一般而言,绝大多数应用软件工程师是不需要关心Windows驱动程序的,最多调用系统函数查询一下设备的状态信息(如调用DeviceIoControl查询网络数据包)。
真正需要关心驱动程序开发的是两类人,一类是所谓的IHV(Independent Hardware Vendor,独立硬件开发商,特制微软之外的所有硬件开发厂商,比如NVidia显卡,HP打印机,Realtek网卡),他们为了销售自己的硬件板卡,就需要开发配套的Windows设备驱动程序, 并且通过微软的认证测试(例如WHQL),才能打上微软的Logo在市面上销售,开发这类驱动,主要是对底层硬件比较熟悉,如PCI协议,USB协议等等。
另一类是ISV(Independent Software Vendor),他们往往需要开发驱动程序来在微软已有的功能上进行进一步的控制,比如网络防火墙,杀毒软件,防盗版拷贝的软件,往往需要写一个驱动程序,Hook进系统,然后进行相应的处理。
要掌握驱动开发,第一要有系统层面的理解,包括基本的CPU/Chipset, PCI等概念,理解驱动如何去寻址,获取中断,执行DMA等等; 第二要仔细研究DDK中的文档和参考代码,第三,有机会和同行交流交流,最后,就是要Self-motivate
「已注销」 2009-06-25 打赏举报 回复 支持一下。
我喜欢:Code::Blocks + WDK + WINDBG 组合!
新手乐园
33,321
社区成员
41,774
社区内容
发帖 与我相关 我的任务 新手乐园 C/C++ 新手乐园 复制链接
扫一扫 分享 确定 社区描述 C/C++ 新手乐园 社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告 试试用AI创作助手写篇文章吧
+ 用AI写文章