0

質問はそれをすべて言います。たとえば、リムーバブル メディアを表す NSURL からブロック デバイスを取得するにはどうすればよいですか? 私が取得したいの/Volumes/MyDeviceは、のようなものです/dev/disk2。IOKitフレームワークを使わずにそれができるのだろうか!どんな助けでも大歓迎です。

4

1 に答える 1

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);
于 2013-04-26T16:29:01.437 に答える