从NSURL获取块设备

时间:2013-04-26 12:38:35

标签: cocoa block device nsurl block-device

这个问题说明了一切。如何从NSURL获取块设备,例如,表示可移动媒体?我想从/Volumes/MyDevice得到的内容类似于/dev/disk2。我想知道如果不使用IOKit框架就可以做到这一点!任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

DiskArbitration.framework会帮助你:

NSURL *volumeURL = [NSURL fileURLWithPath:@"/Volumes/YourDisk"];

DASessionRef session = DASessionCreate(kCFAllocatorDefault);
DADiskRef disk = DADiskCreateFromVolumePath(kCFAllocatorDefault,
                                            session,
                                            (__bridge CFURLRef)volumeURL);

NSDictionary *desc = CFBridgingRelease(DADiskCopyDescription(disk));

/* See DADisk.h for a list of available keys */
NSLog(@"%@", desc[(NSString *)kDADiskDescriptionMediaBSDNameKey]);

CFRelease(disk);
CFRelease(session);

statfs(2)

struct statfs s;
statfs([[volumeURL path] fileSystemRepresentation], &s);
printf("%s\n", s.f_mntfromname);