我有一个USB连接自定义SCSI设备的驱动程序,它实现了一些特定于供应商的命令。每个USB设备都托管多个SCSI LUN。这非常愉快,但是根据设备对SCSI LUN进行分组存在问题,从IOSCSILogicalUnitNub
级别下来(我的驱动程序继承),没有将LUN链接在一起的识别功能(有SCSI逻辑单元号,但每个新设备都会发生冲突;它们都有一个单元0x0)。
我想根据USB locationID
字段(或任何其他唯一的密钥)执行类似的操作,但我不知道如何只使用{来获取父USB设备{1}}匹配的SCSI驱动程序。这也可以更好地在应用程序端而不是在驱动程序中完成,因为应用程序需要跟踪哪个服务具有哪些LUN以及哪个LUN由处理程序实例打开。
IO注册表中的层次结构是:
io_service_t
答案 0 :(得分:0)
如果您的设备的io_service_t位于变量_device中,则代码如下所示:
CFTypeRef _thing_you_want = IORegistryEntrySearchCFProperty(_device, kIOServicePlane, CFSTR("locationID"), NULL, kIORegistryIterateParents);
转到此处获取更多信息: