我想获取/枚举安装在OS X系统上的卷的UUID。
我知道我可以使用diskutil命令来获取它,如下所示。
$ diskutil info / |grep "Volume UUID"
Volume UUID: 039B9653-52AA-34F3-AF4A-854FA47C811A
但是,我想使用IOKit框架以可编程方式(也许)实现它。
如果有人可以告诉我该怎么做,这将非常有帮助。
非常感谢您的提前帮助!
最佳答案
感谢@pmdj的回答,我可以使用以下代码片段解决问题。
void printUUID()
{
DADiskRef disk;
CFDictionaryRef descDict;
DASessionRef session = DASessionCreate(NULL);
std::string mountPoint = "/";
CFURLRef url = CFURLCreateFromFileSystemRepresentation(NULL, (const UInt8 *) mountPoint.c_str(), mountPoint.length(), 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);
printf("%s\n" ,CFStringGetCStringPtr(strValue, kCFStringEncodingMacRoman));
CFRelease(strValue);
CFRelease(descDict);
}
CFRelease(disk);
}
CFRelease(url);
CFRelease(session);
}