在Windows8中切换银行usb设备

本文关键字:usb 设备 Windows8 | 更新日期: 2023-09-27 18:14:24

usb2.0标准支持禁用单个集线器端口。我正在寻找一个API从Windows 8下的用户代码调用,特别是禁用集线器端口,无论是在c#还是在c++中,使用现有的Windows用户模式驱动程序。

在WDF中禁用集线器端口的IOCTL似乎已被弃用。

我已经构建并使用了DevCon -它将通过DDK禁用设备,但不会禁用集线器端口。

WinUSB是一个功能强大的接口,需要指定WinUSB。Sys作为驱动程序堆栈。然而,我不认为这是图书馆,setupapi。Lib和winusb。Lib,提供这个级别的集线器控制。

我真的很感激Windows 8中正确的用户模式API的指针,特别是c#接口。如果没有这样的API存在,知道这一点也会很有帮助。

-增加6/3:由于没有相关信息出现,我们现在正在研究一种基于软件的银行切换算法,可以直接禁用和重新启用设备。我们希望能够以任意大小建造它,但当然,目前这项技术尚未得到证实。

在Windows8中切换银行usb设备

您考虑过实现一些硬件来实现相同的目标吗?

由于似乎还没有人有一个纯软件的解决方案,这很可能被证明是最快的方法。此外,它将完全独立于操作系统,这可能有助于未来的可维护性。

一种简单的银行切换方法

作为一个非常基本的例子,您可以使用现成的串行继电器盒(例如这个)来单独控制进入所有集线器的电源。这样,您就可以一次启用一个"终端集线器"来访问连接到该集线器的设备。请务必使用只有在外部电源存在时才工作的自供电集线器,尽管我已经看到相当多的电源集线器在没有外部电源时仍然连接。

严重黑客攻击:自制USB代理设备

既然您提到您有嵌入式软件开发的经验,您也可以考虑构建一个直通设备,作为集线器(带设备)和主机之间的"代理"。它可以将所需的USB命令发送到下游集线器以禁用/启用端口。如果不需要高数据速率,可以使用Arduino和USB主机屏蔽来构建这样的设备。