我的应用程序将从具有特定信息的 USB 密钥运行,例如我需要的供应商 ID、设备 ID 等。
我尝试使用 libusb,但尽管我仍然无法使其正常工作,我如何才能找到合适的 USB 驱动器来获取信息?
请注意,我希望代码是跨平台的,这就是我首先选择 libusb 的原因。
编辑 :
我找到了一个程序(usbviewer),它可以在连接时枚举所有 USB 端口和驱动器上的特定信息。
我已经阅读了 linux 的源代码,信息是直接从 /proc/bus/usb/devices 中提取的,非常简单。
但是在 Windows 上,要获取 USB 节点连接信息,大约需要 1000 行才能获得数据结构中的实际信息(枚举集线器控制器、根集线器、端口......)。
另一边的 libusb 迫使我生成一个 INF 文件并通过 inf-wizard.exe 为每个设备安装驱动程序,然后我才能获得信息(虽然没有在 linux 上尝试过)。
编辑 2:
我找到了一种使用 Windows、Linux 和 Mac OS X 获取设备序列号的方法(没有尝试过 MAC OS X,但它应该像 Linux 一样工作)。对于 Windows,我GetVolumeInformation()
在 Linux 上使用函数来读取具有 FAT 文件系统的驱动器的序列号,我在相应的 /dev/* 文件中读取 4 个字节,从 0x27 或 0x43 开始,具体取决于 FAT 版本。
但是这种阅读需要程序没有的root访问权限,在我看来有点不可靠。
有任何想法吗 ?