gpt4 book ai didi

c# - Windows 8 中的 bank-switch USB 设备

转载 作者:太空狗 更新时间:2023-10-29 20:39:44 25 4
gpt4 key购买 nike

USB 2.0 标准支持禁用单个集线器端口。我正在寻找一个 API 来从 Windows 8 下的用户代码调用,特别是使用现有的 Windows 用户模式驱动程序在 C# 或 C++ 中禁用集线器端口。

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

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

WinUSB 是一个功能强大的接口(interface),需要将 WinUSB.sys 指定为您的驱动程序堆栈。但是,我认为它的库 setupapi.lib 和 winusb.lib 不提供这种级别的集线器控制。

我非常感谢指向 Windows 8 中正确用户模式 ​​API 的指针,尤其是 C# 接口(interface)。如果不存在这样的 API,了解这也将非常有帮助。

-- 添加 6/3:由于没有出现这方面的信息,我们现在正在研究一种基于软件的银行切换算法,该算法可以直接禁用和重新启用设备。我们希望能够以任意大小构建它,但当然该技术目前尚未得到证实。我会及时更新此线程的最新进展。

最佳答案

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

由于似乎还没有人拥有纯软件解决方案,这很可能被证明是让事情顺利进行的最快方法。此外,它将完全独立于操作系统,这可能有助于 future 的可维护性。

一种简单的银行转换方法

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

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

既然您提到您有嵌入式软件开发经验,您也可以考虑构建一个直通设备,充当集线器(带设备)和主机之间的“代理”。它可以向下游集线器发送所需的 USB 命令以禁用/启用端口。如果不需要高数据速率,则可以使用 Arduino 和 USB Host Shield 构建此类设备。

关于c# - Windows 8 中的 bank-switch USB 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16641109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com