10 分钟完成一个 USB 驱动程序
很多写 Windows Device Driver 的开发人员基本上都是使用 Windows DDK 进行开发的。但
是,现在也有不少人都开始借助一些辅助工具。笔者去年开始接触到 riverStudio,发现它
真的是一个不错的开发工具,不仅写代码的时候思路清晰,而且和 DDK 的结合很好。
当然,也有很多人觉得用 DriverStudio 不够正宗,或者说不能很好的理解 Windows
Device Driver 的架构。我感觉这就有点像 MFC 和 SDK 的关系,关于这个问题在很多地方
都有争论,比如在万千新闻组上,就讨论了将近 2 个月。每个人都有自己的最爱,都有自
己的习惯,只要你能把事情做好,我想用什么方法应该都是一样的。如果你已经习惯了用
DDK 开发,那完全还可以继续用下去;如果你觉得 DriverStudio 不错,那尝试用一个可以
给你按照 OOP 概念来编程的工具有什么不好呢?
在驱动开发网上,经常看到有人询问一些关于 DriverStudio 的使用的问题。我正好很有幸
用它作了几个驱动程序,包括 VXD, KMD 和 WDM,稍微有点心得,因此想写下来给大家
作一个小小的参考。如果其中有错误,欢迎大家给我指出,谢谢。
下面我就介绍一下用 DriverStudio 开发一个 USB 驱动程序的过程。这个 USB 设备有 3 个双
向端点,每个端点的配置如下:
EP 类型 地址 buffer(Bytes)
0 IN/OUT Control 0x80/0x00 16/16
1 IN/OUT Bulk 0x81/0x01 16/16
2 IN/OUT Bulk 0x82/0x02 64/64
我们的驱动程序需要实现的功能就是控制设备上的 LED 灯的亮和灭,以及通过 Endpoint 2
对设备进行读写。
由于 DriveStudio 由几个部分组成,我们写这个驱动程序只要用到 DriverWorks,因此下面
我们就简称它为 DW。在这里,我们假定读者已经正确的安装了 DW,并且已经编译好了
各个库文件。
1. 首先,我们通过快捷方式“Setup DDK and Start MSVC“来启动 VC IDE。这个快捷方式所