Программно получить UUID раздела диска OS X
У меня есть путь к разделу. Как я могу получить UUID этого раздела программно без использования команд терминала? Пример будет более полезным.
3 ответа
Вы можете использовать инфраструктуру Disk Arbitration ( ссылка Apple). В этом блоге также есть хорошее резюме Криса Сутера.
Вы можете получить UUID с помощью kDADiskDescriptionMediaUUIDKey. Аарон Бургхардт хорошо описал это в этой ветке списка рассылки. Вот цитата из этой ссылки:
Получив DADisk, используйте DADiskCopyDescription, чтобы получить словарь свойств, в котором вы найдете UUID с ключом kDADiskDescriptionMediaUUIDKey (другие ключи, которые могут представлять интерес, см. В DADisk.h). Обратите внимание, что DADisk - это оболочка вокруг объекта IOMedia, а словарь описания напрямую соответствует свойствам объекта IOMedia. Кроме того, CFShow() полезен для печати словаря описания на консоли.
$ diskutil info / | grep UUID
Запуск этого из C оставлен в качестве упражнения для читателя.
Если вы хотите раздел, отличный от корневого, вы можете указать точку монтирования или имя устройства (например, disk0s2) вместо /
,
Я думаю, что проще всего использовать Polkit
Загрузите DiskWatcher.h и.m с http://polkit.googlecode.com/svn/trunk/FileSystem/DiskWatcher.h http://polkit.googlecode.com/svn/trunk/FileSystem/DiskWatcher.m
Добавьте его в свой проект (у него нет ARC, поэтому добавьте флаг -fno-objc-arc, если вы используете ARC)
Добавить DiskArbiratation Framework Вы можете использовать
+ (NSString*) diskIdentifierForPath:(NSString*)path;
NSString *UUID1 = [DiskWatcher diskIdentifierForPath:@"/Volumes/Backup900GB"];