我有一个使用 CreateFile() API 读取/写入 USB 设备的库。该设备恰好实现了 HID 设备配置文件,因此它与 Microsoft 的 HID 类驱动程序兼容。
系统上安装的其他一些应用程序正在以读/写模式打开设备,没有共享模式。这会阻止我的库(以及使用它的任何东西)使用该设备。我想这就是 HID 兼容设备的问题——其他驱动软件(鼠标、控制器、PHIDGETS 等)可能无法合作。
无论如何,设备文件路径的形式为:
1:“\\?\hid#hpqremhiddevice&col01#5&21ff20e7&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}”。 2:“\\?\hid#vid_045e&pid_0023#7&34aa9ece&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}”。 3:“\?\hid#vid_056a&pid_00b0&col01#6&5b05f29&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}”。
我正在尝试使用代码打开它,例如:
// First, open it with minimum permissions, this device may not be ours.
// we'll re-open it later in read/write
hid_device_ref = CreateFile(
device_path, GENERIC_READ,
0, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
我考虑过像 SysInternals 的 FileMon 或 Process Monitor 这样的工具。但我似乎无法让它报告上面列出的设备文件句柄的使用情况。