有没有办法确定两个 IOHIDDeviceRef 是否属于同一设备?

Is there a way to determine if two IOHIDDeviceRef belong to same device?

我在 Mac OS (IOHIDDeviceRef) 上有两个 HID 设备引用。如何判断它们是否指向同一个物理设备?

奖励积分: 如果重新连接或新设备,可以使用哪些属性来识别设备。

对于每个 HID 设备引用,调用 IOHIDDeviceGetService 以检索 IOService 引用。每个 IOService 实例(技术上,它的超类 IORegistryEntry 的实例)都有一个唯一的 "Entry ID",可以通过 IORegistryEntryGetRegistryEntryID() 查询。如果条目 ID 在对应于 HID 设备引用的两个 io_service_t 对象上匹配,则它们引用同一设备。

断开连接并重新连接会更改条目 ID,因此您将无法判断它是否与之前通过此方法连接的设备相同。如果底层 USB 或蓝牙设备有序列号,您可以将其与供应商和产品 ID 等结合使用。