如何为Windows实现USB设备驱动程序?

时间:2009-10-13 21:06:16

标签: c windows embedded driver

我应该如何为Windows实施USB设备驱动程序?我应该如何考虑不同版本的窗口,例如:   - Windows XP   - Windows Vista   - Windows 7

是否有可以作为起点的开源解决方案?我是Windows驱动程序开发的新手。

我们有一个带有USB设备端口的嵌入式设备,我们希望在不牺牲数据吞吐量的情况下,尽可能实现从应用程序级到设备的低延迟通信。传输的实际数据是ADC / DAC数据。基本上我们需要尽快将大量数据传输到Windows机器上。

4 个答案:

答案 0 :(得分:12)

我们需要有关该设备的更多信息,以指明您正确的方向,但这里有几个步骤可以帮助您入门:

  • 向Microsoft Connect注册,以便下载Windows驱动程序工具包
  • osr-online注册,因为你会找到很棒的文章,大量的信息,以及专门针对Windows驱动程序的新闻组 - 这个地方是一个金矿
  • 购买Developing Drivers with WDF,这将帮助您理解Windows上的驱动程序开发,为您提供阅读OSR和Microsoft文章的良好基础
  • 希望您可以使用UMDF(用户模式驱动程序),因为您可以使用C ++并只编写COM代码。如果您正在使用需要内核空间的USB做任何事情......那么明年你会有很多阅读和学习的事情!

要回答有关版本的问题,驱动程序工具包中包含的工具可帮助您管理创建不同的驱动程序。如果你写一个好的驱动程序,它应该在所有三个操作系统上运行没有问题,差异将只在配置区域(而不是二进制)

基本上,这取决于您的设备的复杂程度。你想写什么类型的司机?文件系统? MP3播放器?相机?调制解调器?

如果您最终必须编写内核模式驱动程序,请告诉我,我可以为您指出一些好的文章,但不是。

我还应该补充一点,大约5000美元,你可以购买WinDriver的许可证,这个工具可以解决驱动程序开发中的所有困难问题​​。您可以使用C ++或C#用户模式代码与为您的设备自定义生成的驱动程序进行通信。如果你的截止日期很紧,这就是你要走的路。

答案 1 :(得分:2)

您可以查看 libusb * here *的Windows变体。在官方的libusb站点和网络上有许多编程语言的包装器。

答案 2 :(得分:1)

答案 3 :(得分:1)

如果您对设备端有某种形式的控制,请让它实现Windows已提供驱动程序的接口。例如。 USB HID类(字面意思是人工输入设备,但人类和输入都不是必需的)已经有Windows驱动程序,并且顶部有一个合理的Win32 API。但是,你不会在480 Mbps附近获得数据速率。