Приложение какао получает размер / dev / disk0s1 - PullRequest
1 голос
/ 14 апреля 2011

Как я могу получить размер в байтах раздела по имени его устройства (например, / dev / disk0s1) в приложении Какао?Может, мне стоит как-нибудь использовать Disk Arbitration framework?

1 Ответ

3 голосов
/ 14 апреля 2011

Вы правы - вы можете получить эту информацию, используя Disk Arbitration Framework:

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.

...