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。
在使用中, 虽然利用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。
相关文章推荐
- Windows驱动开发工具小结
- Windows驱动开发工具小结
- Windows下PCIe接口的多串口卡驱动开发小结
- Windows驱动开发工具小结
- Windows驱动开发工具小结
- Windows驱动开发之第一个驱动程序
- WINDOWS 7 配置驱动开发环境(wdk7.60)
- Windows驱动开发
- <学习笔记>Windows驱动开发技术详解__派遣函数
- windows驱动开发学习进展----四
- WINDOWS 7 配置驱动开发环境(wdk7.60)
- Windows驱动开发工具 WDK 学习笔记(1) 分类: windows驱动程序WDM 2013-08-01 11:08 566人阅读 评论(0) 收藏
- Windows驱动开发(1) - 驱动程序结构
- windows驱动开发技术详解 VC6与DDK搭配使用的设置
- windows下驱动开发配置(win10,win7,winXP)
- Windows文件系统过滤驱动开发教程(0,1)
- Linux 与 Windows 的设备驱动模型对比:架构、API 和开发环境比较
- [Windows驱动开发](一)序言
- Windows驱动开发调试工具
- Windows 驱动开发 - 8