所以我有一个USB大容量存储设备,它将两个磁盘暴露给macOS。 我使用https://stackoverflow.com/users/1412808/rafael-baptista的文章检测到第一个: https://oroboro.com/usb-serial-number-osx/
但是,我无法使用代码获得第二个:
io_registry_entry_t child;
io_iterator_t child_iterator = MACH_PORT_NULL;
kern_return_t kr;
kr = IORegistryEntryCreateIterator(usbDevice,
kIOServicePlane,
kIORegistryIterateRecursively,
&child_iterator);
if (kr != kIOReturnSuccess) {
return;
}
while ((child = IOIteratorNext(child_iterator)) != MACH_PORT_NULL) {
CFStringRef bsdName = NULL;
bsdName = ( CFStringRef ) IORegistryEntrySearchCFProperty(child, kIOServicePlane, CFSTR( kIOBSDNameKey ), kCFAllocatorDefault, kIORegistryIterateRecursively );
if ( bsdName ) {
....
我很感激任何关于我在这里可以做得更好的指示或信息。
感谢。
答案 0 :(得分:1)
是肯定的。顺便说一句,我找到了解决方案。我正在使用磁盘仲裁来发现新驱动器。
CFDictionaryRef dict = DADiskCopyDescription(disk);
NSDictionary *diskDictionary = (__bridge NSDictionary *)dict;
NSURL *mountPointURL = diskDictionary[(__bridge NSString *)kDADiskDescriptionVolumePathKey];
NSString *deviceMountPath = [mountPointURL path];
NSString *deviceDiskPath = diskDictionary[(__bridge NSString *)kDADiskDescriptionDevicePathKey];
deviceDiskPath将包含IOPath,其中包括设备ID(或名称)和VendorID!