问题描述
||
如何在Cocoa应用程序中通过分区的设备名称(例如/ dev / disk0s1)获取分区的大小(以字节为单位)?也许我应该以某种方式使用磁盘仲裁框架?
解决方法
没错,您可以使用磁盘仲裁框架获取该信息:
DASessionRef session = DASessionCreate(NULL);
if (session) {
DADiskRef disk = DADiskCreateFromBSDName(NULL,session,\"/dev/disk0s1\");
if (disk) {
CFDictionaryRef diskDescription = DADiskCopyDescription(disk);
NSDictionary *diskData = (NSDictionary *)diskDescription;
NSString *diskSizeKey = (NSString *)kDADiskDescriptionMediaSizeKey;
unsigned long size = [[diskData objectForKey:diskSizeKey]
unsignedLongValue];
NSLog(@\"size in bytes = %lu\",size);
CFRelease(diskDescription);
CFRelease(disk);
}
else NSLog(@\"Error while getting DA disk for /dev/disk0s1\");
CFRelease(session);
}
else NSLog(@\"Error while creating DA session\");
请注意,/ dev / disk0s1是EFI分区。