您的位置:首页 > 其它

Windows驱动开发小结

2012-07-20 11:15 225 查看
Windows驱动开发有很多种开发工具,而且各有优势,如DDK、DriverStudio、WinDriver等。DDK开发驱动最复杂,而且需要了解很多关于Windows内核的知识,因此开发周期很长,但是出来的驱动执行的效率是最高的;DriverStudio对DDK里面很多函数做了封装,而且可以通过向导生成驱动程序框架,只需要在上面修改就可以生成驱动,但是也需要对内核知识以及经DriverStudio封装的函数了解;WinDriver是一个开发驱动很简洁的工具,只要硬件连上,WinDriver就能自动生成和硬件匹配的驱动,而且还同时生成一个Win32应用程序供使用。

在使用中, 虽然利用DDK开发驱动程序难度较大, 但是代码非常简洁, 结构清晰, 效率也高。利用第三方开发工具使用简单, 开发速度较快, 但对于驱动程序的理解和深入开发不如DDK。因此选择DDK开发设备驱动程序, 虽然开始会觉得非常复杂, 但从执行效率和功能上会更有利。根据项目要求,我选择了DDK作为底层的驱动开发工具。

本设计主要在于开发Windows XP下面的PCIE驱动程序,其中主要开发难点在于中断和DMA。自己用了一个月的时间搞DDK,完全没有什么经验,在师兄的指导下最终还是完成了中断的开发,DMA的开发也基本完成(未做测试)。现在由于项目的原因中断了,但是自己还是大体了解了Windows下面的驱动开发步骤和学习经历。现把自己一个月的主要工作总结如下。

首先是书籍。用DDK开发Windows驱动的书籍比较少,适合入门且经典的一本书是《Windows驱动开发技术详解》,本书内容较为简单,且有很多源码可参考,介绍的也比较详细。与此同时,还看了最经典的一本书《Programming the Microsoft Windows driver model》,貌似是微软的一个人写的,挺好的,但是初学的话由于介绍不是很详细,所以难度有点大,但是入门后参看此书绝对是一个提高。后来偶然在图书馆翻到了很古老的几本书《Windows2000设备驱动程序设计指南》,老外写的,看到此书介绍的更加详细,也很适合入门。还有两本暂时还没有参看。《Windows
WDM设备驱动程序开发指南》和《实用技术:Windows NT与Windows 2000设备驱动及开发》都是老外写的,暂不清楚效果如何。

至于DriverStudio开发的话,武安河的《Windows 2000/XP WDM设备驱动程序开发》,听说是本经典。还有武安河也写过WDF开发的书。

总之读了上面的书的话再加上自己写了一些源码的话,Windows驱动应该不是什么难题。主要在于调试和硬件的部分。我自己安装的DDK是Windows DDK 3790.1830,然后调试工具只用了Compuware DriverStudio软件里面的DriverMonitor。驱动调试比较难,主要是经常蓝屏。由于微软为了方便开发,在WDM中屏蔽了很多硬件细节,所以对硬件不是很懂的也可以搞起,但是要想深入发展的话还是要了解硬件。

Windows驱动要熟悉应用程序和驱动程序,从上层传到下层操作系统怎么传的,IRP怎么调用和处理的,StartIo,ISR,DPC,同步异步,用户模式和内核模式的通信,共享和复制内存等等,设备堆栈和IO堆栈,IRP的分层驱动传递,还有队列。

自己才疏学浅,只是搞了一个多月的感想,希望大家拍砖,不希望误导人。

操作系统这本书也看完了,接下来打算深入看Windows API。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: