Hey everyone. In my app, I need a way to uniquely identify USB drives. Right 
now, I’m doing it by UUID, and I’m getting it with this code:

+ (NSUUID *)uuidForDeviceName:(NSString *)name {
        DADiskRef disk = NULL;
        CFDictionaryRef descDict;
        DASessionRef session = DASessionCreate(NULL);
        if (session) {
                const char *mountPoint = [name 
cStringUsingEncoding:NSASCIIStringEncoding];
                CFURLRef url = CFURLCreateFromFileSystemRepresentation(NULL, 
(const UInt8 *)mountPoint, strlen(mountPoint), TRUE);
                disk = DADiskCreateFromVolumePath(NULL, session, url);
                if (disk) {
                        descDict = DADiskCopyDescription(disk);
                        if (descDict) {
                                CFTypeRef value = 
(CFTypeRef)CFDictionaryGetValue(descDict,
                                                                                
  CFSTR("DAVolumeUUID"));
                                CFStringRef strValue = 
CFStringCreateWithFormat(NULL, NULL,
                                                                                
CFSTR("%@"), value);
                                //NSLog(@"%@", strValue);
                                CFRelease(descDict);

                                NSUUID *uuid = [[NSUUID alloc] 
initWithUUIDString:CFBridgingRelease(strValue)];
                                //SBLogObject([uuid UUIDString]);
                                return uuid;
                        } else {
                                NSLog(@"Sorry, no Disk Arbitration 
description.");
                        }
                        CFRelease(disk);
                } else {
                        NSLog(@"Sorry, no Disk Arbitration disk.");
                }
        } else {
                NSLog(@"Sorry, no Disk Arbitration session.");
        }

        return nil;
}

Unfortunately, there is a problem. It only seems to work with HFS+ drives. It 
cannot get the UUID of a FAT 32-formatted drive, which is what my problem 
typically requires.

Is there any supported way to get the UUID of a FAT-formatted drive? Or another 
method which can uniquely identify USBs of all major filesystem types?

Thanks in advance to anyone who helps.

— SevenBits

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to