admin 管理员组

文章数量: 887017

     随着工作时间的增加,感觉自己技术越做越向DESIGN发展哈哈,一些具体的工作反而少了很多,所以做为总结呢,把自己对WINDOWS驱动分享一下,当然了水平及时间都有限欢迎大家一起讨论。

     其实在网上看招聘做驱动的工程师一般都要求比较长的工作经验,说实话在我一开始搞软件开发的时候总觉得要求工作经验不是很有道理,人家诸葛出山的时候都也是零经验吗,但是做了一段时间之后我只能说搞嵌入式的工程师要求工作经验其实还有一层涵义就是这个人能挺得住,呵呵,因为资料少吗。记得我开始搞WINCE的时候在坛子上发贴好像也没什么人回为这事还经常着急,不过现在看看也不奇怪,因为我当时问的例如什么编译过去去怎么办之类的问题根本就没法答。哈哈扯远了,就一句话吧只是想说搞驱动的必须要忍受圈子不如JAVA,.NET大,资料不如人家多的痛苦,很多时候就是要看英文原本的东西。

    在今年获得微软MVP的开始总是觉得自己的水平还是远远不够的和前辈们相比只是知道些皮毛而已,但是想想谁不是从菜鸟过来的呢,所以我觉得还是写一些东西总结一下也算是个平台。我一直是在做WINCE的驱动不过WIN7出了之后看了一下感觉和CE的驱动其实也是大同小异,不一样的地方也比较好理解。甚至最近在看LINUX的东西的时候也没有觉得和WINDOWS的思路差好多,所以其实越到了底层操作系统之间的实现差距也就越小了。好了咱们言归正传,先看看什么是WDK,也就是Windows Driver Kit.这个是WINDOWS驱动开发平台。那么怎么获取这个开发工具呢。http://www.microsoft/downloads/en/details.aspx?displaylang=en&FamilyID=36a2630f-5d56-43b5-b996-7633f2ec14ff在这个网址下载就是一个ISO文件。有关安装的过程会在后面介绍。这个工具支持以下的操作系统

Windows 7

Windows Server 2008 R2

Windows Server 2008 with Service Pack 1 (SP1)

Windows Vista with Service Pack 1 (SP1)

Windows XP with Service Pack 3 (SP3)

Windows Server 2003 with Service Pack 2 (SP2)

Windows XP Professional x64 Edition

可能细心的朋友会发现没有WIN2000了,没错的确是没有WIN2000了,原因很简单咱们后面章节会介绍的一个WINDOWS DRIVER的重要概念WDM模型,而WIN2000的驱动不是基于这个架构的。

好的说了很多的前言咱们来大概看一下看一下做一个驱动程序要有几步。

一 肯定是要了解DRIVER的需求:注意这个可是跟搞应用的需求不一样,因为驱动是连接硬件与软件的桥梁,那么操作系统对驱动程序的要求与支持都有哪些,硬件的特性又是怎么样的是如何连接在电脑上的怎么控制,能否即支持PNP,电源管理策略,你的驱动要支持哪些WINDOWS版本,多核与64位的支持要不要。这是第一步但也是最难的一步。

二 设计阶段:别以为驱动都是硬件相关的就不需要设计,首先选择模式(咱们后面会讲到)还有选择开发语言目前C++的驱动也很风声水起。

三 编码·调试·签名·测试 这三个放在一部分因为到了这个阶段一般来说编码并不太难(这个是驱动程序的特点),但是调试和签名相对来说都是和编码一样费事的工作。呵呵

四 分发 如果前面没有做好需求,这时候可能会出现一定全球化/本地化的问题。

我感觉大概的流程就是这些。一般来说驱动开发都采取敏捷开发的模式,迭代的方式比较少。

其实WIN7的驱动特性还是有比较多的更新的,比如说对于声音的驱动加了这个接口

IPortWMIRegistration 这个接口可以让MINIPORT的驱动向ETW进行注册了。
但是之所以不把它独立出来,是因为开始说这个太早了。其实简单的理解WIN7新特性就是对于多核及64位的支持了。

 

本文标签: 前言 新特性 系列 Windows amp