У меня есть путь к разделу.Как я могу получить UUID этого раздела программно без использования команд терминала?Пример будет более полезным.
$ diskutil info / | grep UUID
Выполнение этого из C оставлено в качестве упражнения для читателя.
Если вы хотите раздел, отличный от корневого, вы можете указать точку монтирования или имя устройства (например, disk0s2) вместо /.
/
Вы можете использовать инфраструктуру Disk Arbitration ( Apple, ссылка ). В этом блоге Криса Сутера также есть хорошее резюме.
Вы можете получить UUID с помощью kDADiskDescriptionMediaUUIDKey. Аарон Бургхардт хорошо описал это в этом списке рассылки тема . Вот цитата из этой ссылки:
Получив DADisk, используйте DADiskCopyDescription, чтобы получить словарь свойств, в котором вы будете найдите UUID с ключом kDADiskDescriptionMediaUUIDKey (другие ключи, которые могут быть интерес). Обратите внимание, что DADisk - это оболочка вокруг объекта IOMedia и словаря описания. напрямую соответствует свойствам в объекте IOMedia. Кроме того, CFShow () полезен для печати Описание словаря к консоли.
Я думаю, что проще всего использовать 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 Вы можете использовать
+ (NSString*) diskIdentifierForPath:(NSString*)path; NSString *UUID1 = [DiskWatcher diskIdentifierForPath:@"/Volumes/Backup900GB"];