Dan*_*ana 7 .net c# usb windows-8
USB 2.0标准支持禁用各个集线器端口.我正在寻找一个API来从Windows 8下的用户代码调用,特别是使用现有的Windows用户模式驱动程序在C#或C++中禁用集线器端口.
看起来在WDF中已弃用禁用集线器端口的IOCTL.
我已经构建并使用了DevCon - 它将通过DDK禁用设备,但不会禁用集线器端口.
WinUSB是一个功能强大的接口,需要将WinUSB.sys指定为驱动程序堆栈.但是,我不认为它的库,setupapi.lib和winusb.lib提供了这种级别的集线器控制.
我真的很感激指向Windows 8中正确的用户模式API,特别是C#接口.如果不存在这样的API,那么知道它也会非常有用.
- 增加了6/3:由于没有关于此的信息,我们现在正在研究一种基于软件的银行切换算法,该算法可以直接禁用和重新启用设备.我们希望能够以任意大小构建它,但当然这项技术尚未得到证实.我会让这个帖子与进度保持同步.
您是否考虑过实施一些硬件来实现相同的目标?
由于似乎还没有人拥有纯软件解决方案,因此这很可能被证明是让事情顺利进行的最快方法。此外,它将完全独立于操作系统,这可能有助于将来的可维护性。
作为一个非常基本的示例,您可以使用现成的串行继电器盒(例如这个)来单独控制所有集线器的电源。这样,您就可以一次启用一个“终端集线器”来访问连接到该集线器的设备。请务必使用仅在存在外部电源时才工作的自供电集线器 - 我见过很多有源集线器在没有外部电源时仍然可以连接。
既然您提到您有嵌入式软件开发的经验,您还可以考虑构建一个直通设备,充当集线器(带有设备)和主机之间的“代理”。它可以将所需的 USB 命令发送到下游集线器以禁用/启用端口。如果不需要高数据速率,则可以使用 Arduino 和 USB Host Shield 构建此类设备。
| 归档时间: |
|
| 查看次数: |
380 次 |
| 最近记录: |