有没有一种简单有效的方法来列出 C# 或 C/C++ 中的所有 USB 设备
Is there a simple and efficient way to get listed all usb devices in C# or C/C++?
我必须制作一个程序来监控USB端口以及USB设备何时插入(游戏手柄,闪存驱动器,鼠标,ECC...我得到一个唯一标识符(设备 ID 或其他东西会很好)。
起初,我尝试使用 system.management 类使用 C#,并每秒查询cim_logicaldevice类以插入新设备。某些设备返回了更多带有 DeviceID 的行,但这不是问题。问题是程序(在任务管理器中)占用的内存不断增长。这是源代码:
http://pastebin.com/dQv3cMQC
有没有办法避免内存使用的增长?
我必须用C++或C#来做这个程序,它必须是最有效的(因为它必须永远打开)。
我建议在WDK中查看USBView示例。如果您不熟悉这一点,只需运行它 - 此工具遍历系统上的整个 USB 树,并打印出每个设备的信息和描述符列表。
在您的情况下,我将从此示例中的 RefreshTree() 函数开始,然后您可以按照代码查看它如何枚举主控制器、集线器和最终设备。对于找到的每个设备,您可以查看接口描述符中的 bInterfaceClass,以了解它通告的接口类型。
获取此示例源代码的最简单方法是安装 7.1.0 WDK,该 WDK 当前在此处可用:http://www.microsoft.com/en-us/download/details.aspx?id=11800
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- 指向设备对象成员的指针
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- 是否可以使用winusb同时与多个相同的usb设备进行通信
- 为什么cudaMemGetInfo报告设备内存总量的变化
- Qt Q串行端口未编程设备未关闭
- 有没有办法在远程设备上打开和编辑visual Studio 2017解决方案
- 如何在 MAC OS c/c++ 中阻止 USB 存储设备
- 用于创建/注册虚拟存储设备的 IOKit 驱动程序
- createFile() 和 DeviceIoControl() 等效于 Unix/Linux 中的卷设备
- 在安卓设备上找不到使用 QStandardPath 创建的文件
- 通过Python Distutils(用于Python C扩展)使用可重定位的设备代码编译CUDA代码
- 使用蓝牙组件将数据从Android手机传输到串行设备时出现问题
- 枚举所有设备路径
- 嵌入式设备 -> std::thread -> FreeRTOS?
- 如何将 2 个 SPI 设备连接到 Arduino MkrZero
- ESP32 无法识别任何设备已连接到其接入点
- 我的设备上的 C++ 编译器版本是什么
- 如何以编程方式将音频从任何录制设备路由到任何播放设备