次のコードで OS X ディスク パーティションの UUID を取得できます。
void PrintUUID()
{
DADiskRef disk;
CFDictionaryRef descDict;
DASessionRef session = DASessionCreate(NULL);
if (session) {
disk = DADiskCreateFromBSDName(NULL, session, "/dev/disk0s2");
if (disk) {
descDict = DADiskCopyDescription(disk);
if (descDict) {
CFTypeRef value = (CFTypeRef)CFDictionaryGetValue(descDict,
CFSTR("DAVolumeUUID"));
CFStringRef strValue = CFStringCreateWithFormat(NULL, NULL,
CFSTR("%@"), value);
print(strVal); <------------- here is the output
CFRelease(strValue);
CFRelease(descDict);
}
CFRelease(disk);
}
}
}
上記のコードは disk0 の UUID を取得します。ルート ディスク (マウント ポイント = /) の UUID を取得したいのですが、「/dev/disk0s2」の代わりに「/」を使用すると、DADiskCopyDescription は NULL を返します。また、次のコマンドでターミナルで実行できることも知っています。
diskutil info /
簡単に言えば、ルートディスクの BSD 名を取得するにはどうすればよいですか? (DADiskCreateFromBSDName で使用するため)
誰にもアイデアがありますか?ありがとう。