许多 USB 设备包含一个唯一的序列号(实际上是一个 Unicode 字符串),主机可以将其与 16 位供应商和产品 ID 号结合使用,以唯一地标识设备。
我试图弄清楚如何编写一个能够显示连接到系统的所有 USB 人机接口设备列表的 Windows 应用程序。该列表将为每个 HID 保留一行,包括系统键盘。列表中有供应商 ID、产品 ID 和序列号的列。
我可以通过SetupDiGetClassDevs
使用返回的 GUID调用HidD_GetHidGuid
并通过重复调用SetupDiEnumDeviceInterfaces
. 然后,我可以调用SetupDiGetDeviceInterfaceDetail
以获取每个设备的路径,我可以使用CreateFile
. 从那里我可以通过调用HidD_GetAttributes
.
我无法弄清楚如何检索序列号字符串。当我搜索此问题的解决方案时,我发现了很多有关如何获取 USB 大容量存储设备序列号的信息,但似乎没有任何信息适用于任何其他类型的 USB 设备。我很高兴发现检索序列号字符串的通用方法或 HID 特定方法。
我有一种感觉,Win32 端口libusb
可以轻松管理这个问题,但不幸的是,我需要一个仅依赖于 Windows 附带的库的解决方案,例如包含上述功能的 DLLsetupapi
和DLL。hid
任何建议将不胜感激!