(MACOSX) - Знание, было ли смонтировано подключенное устройство из DMG - PullRequest
0 голосов
/ 12 апреля 2010

Не удалось найти эту информацию с помощью DiskArbitration или FSGetVolumeInfo / GetVolumeParms ...

Я знаю, что hdiutil использует частную платформу под названием DiskImages framework, но я не хотел бы запускать внешнюю утилиту каждый раз, когда мне нужна эта информация ... для чего нужен API?

1 Ответ

1 голос
/ 12 апреля 2010

Обновление за июль 2015 года

Это обновление было предложено новым вопросом .

от Stan James.

Вы можете получить эту информацию, используя DiskArbitration framework. Чтобы использовать приведенный ниже пример, вы должны создать ссылку и #import it.

#import <DiskArbitration/DiskArbitration.h>

...

- (BOOL)isDMGVolumeAtURL:(NSURL *)url
{

  BOOL isDMG = NO;

  if (url.isFileURL) {

    DASessionRef session = DASessionCreate(kCFAllocatorDefault);
    if (session != nil) {

      DADiskRef disk = DADiskCreateFromVolumePath(kCFAllocatorDefault, session, (__bridge CFURLRef)url);
      if (disk != nil) {

        NSDictionary * desc = CFBridgingRelease(DADiskCopyDescription(disk));
        NSString * model = desc[(NSString *)kDADiskDescriptionDeviceModelKey];
        isDMG = ([model isEqualToString:@"Disk Image"]);

        CFRelease(disk);

      }

      CFRelease(session);

    }

  }

  return isDMG;

}

Использование:

BOOL isDMG = [someObject isDMGVolumeAtURL:[NSURL fileURLWithPath:@"/Volumes/Some Volume"]];

Надеюсь, это поможет.

...