surendran
surendran

Reputation: 476

Programmatically retrieve an OS X disk partition UUID

I have a path to a partition. How can I retrieve UUID of that partition programatically without using terminal commands? An example will be more helpful.

Upvotes: 4

Views: 7892

Answers (3)

Tibidabo
Tibidabo

Reputation: 21571

I think the easiest is to use polkit

Download the DiskWatcher.h and .m from http://polkit.googlecode.com/svn/trunk/FileSystem/DiskWatcher.h http://polkit.googlecode.com/svn/trunk/FileSystem/DiskWatcher.m

Add it to your project (It has no ARC so add -fno-objc-arc flag if you use ARC)

Add DiskArbiratation framework You can use

+ (NSString*) diskIdentifierForPath:(NSString*)path;

NSString *UUID1 = [DiskWatcher diskIdentifierForPath:@"/Volumes/Backup900GB"];

Upvotes: 0

Dan
Dan

Reputation: 3635

You can use the Disk Arbitration framework (Apple reference). There is also a good summary at this blog by Chris Suter.

You can get the UUID by using the kDADiskDescriptionMediaUUIDKey. Aaron Burghardt described it well in this mailing list thread. Here is a quote from that link:

Once you have the DADisk, use DADiskCopyDescription to get a dictionary of properties, in which you will find the UUID with the key kDADiskDescriptionMediaUUIDKey (see DADisk.h for other keys that may be of interest). Note, a DADisk is a wrapper around an IOMedia object and the description dictionary corresponds directly to the properties in the IOMedia object. Also, CFShow() is useful for printing the description dictionary to the console.

Upvotes: 5

user57368
user57368

Reputation: 5765

$ diskutil info / | grep UUID

Running this from C is left as an exercise for the reader.

If you want a partition other than the root, you can specify the mount point or device name (eg. disk0s2) in place of /.

Upvotes: 8

Related Questions