Macos 如何确定已卸下USB设备的位置ID?

Macos 如何确定已卸下USB设备的位置ID?,macos,usb,detection,iokit,Macos,Usb,Detection,Iokit,我有一个USB“watcher”,可以加载特定设备的设备描述符,并在NSMutableArray中跟踪它们 添加新设备时,我会得到回调,并可以通过比较locationIDs(唯一会话ID)来遍历我拥有的设备列表 如果找不到设备的locationID(应始终如此),则我将其添加到数组中 现在,当设备被移除时,我得到另一个回调。它具有服务ID,该ID与添加设备时使用的ID不同 由于设备已不存在,我无法为其获取设备描述符(因此,没有locationID) 如何将此服务ID与阵列中的设备相匹配?您是否尝

我有一个USB“watcher”,可以加载特定设备的设备描述符,并在
NSMutableArray
中跟踪它们

添加新设备时,我会得到回调,并可以通过比较
locationID
s(唯一会话ID)来遍历我拥有的设备列表

如果找不到设备的
locationID
(应始终如此),则我将其添加到数组中

现在,当设备被移除时,我得到另一个回调。它具有服务ID,该ID与添加设备时使用的ID不同

由于设备已不存在,我无法为其获取设备描述符(因此,没有
locationID


如何将此服务ID与阵列中的设备相匹配?

您是否尝试过使用
IORegistryEntryGetRegistryEntryID
在设备连接时获取设备的服务对象的唯一ID,并在设备消失时使用您获得的ID与阵列中的设备相匹配?据我所知,这应该行得通。(
IOService
IORegistryEntry
的子类,因此您可以在任何
IOService
对象上使用
ioRegistryEntryId
)。成功了!我喜欢这个地方!