获得司机父母(或祖先)的财产

时间:2012-09-24 14:02:38

标签: macos usb device-driver scsi kernel-extension

我有一个USB连接自定义SCSI设备的驱动程序,它实现了一些特定于供应商的命令。每个USB设备都托管多个SCSI LUN。这非常愉快,但是根据设备对SCSI LUN进行分组存在问题,从IOSCSILogicalUnitNub级别下来(我的驱动程序继承),没有将LUN链接在一起的识别功能(有SCSI逻辑单元号,但每个新设备都会发生冲突;它们都有一个单元0x0)。

我想根据USB locationID字段(或任何其他唯一的密钥)执行类似的操作,但我不知道如何只使用{来获取父USB设备{1}}匹配的SCSI驱动程序。这也可以更好地在应用程序端而不是在驱动程序中完成,因为应用程序需要跟踪哪个服务具有哪些LUN以及哪个LUN由处理程序实例打开。

IO注册表中的层次结构是:

io_service_t

1 个答案:

答案 0 :(得分:0)

如果您的设备的io_service_t位于变量_device中,则代码如下所示:

CFTypeRef _thing_you_want = IORegistryEntrySearchCFProperty(_device, kIOServicePlane, CFSTR("locationID"), NULL, kIORegistryIterateParents);

转到此处获取更多信息:

http://developer.apple.com/library/mac/#documentation/devicedrivers/conceptual/AccessingHardware/AH_IOKitLib_API/AH_IOKitLib_API.html