I am not very proficient in Mac OS X programming, but I am working on a Qt application which needs info about the storage devices. Basically a list of hard drives and USB th
This should get you most of what you're looking for:
NSWorkspace *ws = [NSWorkspace sharedWorkspace];
NSArray *vols = [ws mountedLocalVolumePaths];
NSFileManager *fm = [NSFileManager defaultManager];
for (NSString *path in vols)
{
NSDictionary* fsAttributes;
NSString *description, *type, *name;
BOOL removable, writable, unmountable, res;
NSNumber *size;
res = [ws getFileSystemInfoForPath:path
isRemovable:&removable
isWritable:&writable
isUnmountable:&unmountable
description:&description
type:&type];
if (!res) continue;
fsAttributes = [fm fileSystemAttributesAtPath:path];
name = [fm displayNameAtPath:path];
size = [fsAttributes objectForKey:NSFileSystemSize];
NSLog(@"path=%@\nname=%@\nremovable=%d\nwritable=%d\nunmountable=%d\n"
"description=%@\ntype=%@, size=%@\n\n",
path, name, removable, writable, unmountable, description, type, size);
}
Take a look at getmntinfo()
(for an enumeration of mount points) and statfs()
(for information about a known mount point.)
Well, back in the day we used FSGetVolumeInfo. As for removability, that would be FSGetVolumeParms using vMExtendedAttributes & 1<< bIsRemovable
. (Actually, I don't recall that particular API. There was something called Driver Gestalt, but it's gone now.)
I suppose there's a shiny Objective-C interface, but if nobody else replies, at least there's the C way.