扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
编写驱动程序的人不多,而且驱动程序通常都工作在内核模式,因此驱动程序一直被很多人看的很神秘。Windows Vista马上就要出来了, 它的驱动程序模型肯定会有比较大的变动,但是作为微软长期的一个实践准则,那就是各个版本之间能够兼容,应该不会变。最重要的,那帮人的思想应该不会发生大的变化。我知道很多人对于写驱动程序还是觉得比较陌生,我看到很多介绍驱动程序的书写得也比较难懂,这里我就抛砖引玉,用一个实例来说一下在Windows下面编写驱动程序的方法。
Windows下面编写驱动程序比Linux驱动程序入门要难一些,刚开始很多人看着一大堆的概念都迷糊了。这篇文章就不说这些烦琐的概念了,我知道不清楚的时候大家都会用google的。。本文用一个虚拟串口的驱动程序作为例子,来说说Windows下面的驱动程序的开发方法。这个虚拟串口的驱动程序是在驱动之家的一个贴子里面发现的,有空我把作者的名字找出来,给大家敬佩敬佩。
本文打算分为2个部分,第一个部分介绍编写和编译驱动程序需要准备的环境以及我将要介绍的这个驱动程序的大体思路。第二个部分将主要对驱动程序的实现进行仔细说明。
在Windows下面开发驱动程序需要两个东西,一个是Windows Driver Development Kit,也就是传说中的DDK,我采用的是Windows 2000的DDK,比较容易下载,在Web迅雷里面一搜一大堆,Vista都已经出来了,当然现在已经有更高版本的DDK了。另外一个工具就是编译器,VC6.0,VS哪个版本都可以。不过我用的W2K DDK只跟VC6.0一起用了,其它的我不能担保了。
都装好了之后,在开始菜单就会有一个DDK的菜单栏,里面有一个checked 和一个 free,Checked就是我们平时写程序的debug版本,free的那个就是release版本。刚开始分不清楚,随便点一个都成,进去之后就是一个DOS窗口,里面可以编译我们的驱动程序。找一个DDK的例子,敲Build试试编译一下。
然后说一下我们的虚拟串口驱动程序,传说windows的内核驱动程序分为3种——总线驱动、过滤器驱动和功能驱动。总线驱动很明显,就是驱动总线的。负责发现设备,通知设备管理器。过滤器驱动是什么呢?就相当于我们设计模式里面说的Adapter,他可以变更设备的接口行为,至于功能驱动嘛,就是真正实现设备功能的驱动啦。
我们要做一个虚拟的串口驱动程序,大家就很清楚,这个设备是一个虚拟的,虚拟的就不能在任何总线上面了。这样子,我们就先虚拟一个总线出来,然后告诉设备管理器,这里有一个串口,哈哈,设备管理器傻乎乎的就去找一个串口的功能驱动带过来用了,然后操作系统就会以为我们这里有一个串口了。
所以这个虚拟的串口驱动程序,实际上就由一个总线驱动、功能驱动构成。总线驱动负责说这里有几个串口,功能驱动就把这个假串口告诉PNP说这是一个串口,然后应用程序就会过来进行访问了。
这里就有一个问题,我要虚拟几个串口出来呢?什么时候报告设备管理器新的串口呢?
这个虚拟串口驱动程序是这么解决的,另外再搞一个应用程序,这个应用程序通知这个虚拟总线说,来,加一个串口,就相当于一个中断,这个虚拟总线就向我们的设备管理器进行报告,一路下去就OK了。
查看本文来源
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者