1

如何在 Cocoa 应用程序中通过设备名称(例如 /dev/disk0s1)获取分区的大小(以字节为单位)?也许我应该以某种方式使用磁盘仲裁框架?

4

1 回答 1

4

你是对的——你可以通过使用磁盘仲裁框架来获取这些信息:

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 分区。

于 2011-04-14T13:15:35.457 回答