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

我应该如何处理为Windows实现USB设备驱动程序? 我应该如何考虑不同版本的Windows,例如: – Windows XP – Windows Vista – Windows 7

有开源解决scheme可以作为一个起点吗? 我是一个Windows驱动程序开发的总新手。

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

我们需要更多关于该设备的信息来指引您正确的方向,但是这里有几个步骤可以帮助您开始:

  • 向Microsoft Connect注册,以便您可以下载Windows驱动程序工具包
  • 在osr-online上注册,因为你会发现很棒的文章,大量的信息,以及专门给Windows驱动程序的新闻组 – 这个地方是一个金矿
  • 购买使用WDF开发驱动程序 ,这将有助于您了解Windows上的驱动程序开发,并为您阅读OSR和Microsoft的文章奠定良好的基础
  • 希望您可以使用UMDF(用户模式驱动程序),因为您可以使用C ++并只写COM代码。 如果你用USB来做任何需要内核空间的东西….你明年就有很多的阅读和学习工作要做!

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

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

如果你不得不写一个内核模式驱动程序,让我知道,我可以指给你一些好的文章,而不是。

我还应该补充一下,大约5000美元,你可以购买一个WinDriver的许可证,这个工具可以将所有困难的事情从驱动程序开发中解放出来。 您可以使用C ++或C#用户模式代码与您的设备自定义生成的驱动程序进行通信。 如果你有紧迫的期限,这是要走的路。

你可以看看libusb * 这里 *的窗口变种。 官方libusb网站和网络上有很多编程语言的包装器。

从这里开始: Windows Driver Kit简介

如果您对设备端有某种形式的控制,请使用Windows已经为其提供驱动程序的接口。 例如,USB HID类(字面上是人类输入设备,但是人类和输入都不是强制性的)已经具有Windows驱动程序,并且顶部有一个合理的Win32 API。 尽管如此,你无法获得任何接近480 Mbps的数据速率。