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


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

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

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


4056
2017-10-13 21:06


起源



答案:


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

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

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

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

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

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


12
2017-10-13 21:19



我们有嵌入式设备和USB设备端口,我们希望从应用程序级到设备具有低延迟通信,而不会牺牲数据吞吐量。 - Velho Kerho
延迟很大程度上取决于硬件的USB控制器。如果我是你,我会首先将测试UMDF(用户模式)驱动程序放在一起,看看它是否满足您的延迟需求。忘记好的接口,什么不是,只需实现I / O功能和Win32测试应用程序来推送和提取数据。通过上面提到的这本书,您应该可以在大约一周内准备好基本的驱动程序。 UMDF的优点是它易于实现且易于调试,因为您不需要内核调试器。如果UMDF没有削减它,你可以随时使用KMDF。 - Dr. Watson


答案:


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

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

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

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

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

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


12
2017-10-13 21:19



我们有嵌入式设备和USB设备端口,我们希望从应用程序级到设备具有低延迟通信,而不会牺牲数据吞吐量。 - Velho Kerho
延迟很大程度上取决于硬件的USB控制器。如果我是你,我会首先将测试UMDF(用户模式)驱动程序放在一起,看看它是否满足您的延迟需求。忘记好的接口,什么不是,只需实现I / O功能和Win32测试应用程序来推送和提取数据。通过上面提到的这本书,您应该可以在大约一周内准备好基本的驱动程序。 UMDF的优点是它易于实现且易于调试,因为您不需要内核调试器。如果UMDF没有削减它,你可以随时使用KMDF。 - Dr. Watson


你可以看一下Windows的变种 libusb的 *这里*。官方libusb站点和Web上有许多编程语言的包装器。


2
2017-11-08 13:48



请注意,libusb-win32早已过时,有利于跨平台 libusb的。 - Hi-Angel


从这里开始: Windows Driver Kit简介


1
2017-10-13 21:09



总新手我不是那个新手的水平;-) - Velho Kerho
对不起,我太累了太多新手了。以下答案对于您所在级别的人来说非常详细。 - Keith Adler


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


1
2017-10-14 11:27



同意,在设备端实现HID是避免在Windows端(或其他操作系统)上开发驱动程序的最佳方法。 - kenny