如何以编程方式检索OS X中根磁盘分区的UUID? [英] How to programmatically retrieve UUID of root disk partition in OS X?

查看:423
本文介绍了如何以编程方式检索OS X中根磁盘分区的UUID?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以通过此代码检索OS X磁盘分区UUID:

I can retrieve an OS X disk partition UUID by this code:

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。
我也知道我可以在终端通过这个命令:

Above code retrieve UUID of disk0, I want to retrieve UUID of root disk (mount point = /), if I use "/" instead "/dev/disk0s2" then DADiskCopyDescription returns NULL. Also I know I can do it in Terminal by this command:

diskutil info /

简要地说,如何检索BSD根磁盘的名称? (在DADiskCreateFromBSDName中使用)

Briefly how can I retrieve BSD Name of root disk? (to use it in DADiskCreateFromBSDName)

任何人都有想法?
感谢。

Anybody has an idea? Thanks.

推荐答案

使用 DADiskCreateFromVolumePath c $ c> DADiskCreateFromBSDName :

Use DADiskCreateFromVolumePath instead of DADiskCreateFromBSDName:

char *mountPoint = "/";
CFURLRef url = CFURLCreateFromFileSystemRepresentation(NULL, (const UInt8 *)mountPoint, strlen(mountPoint), TRUE);
disk = DADiskCreateFromVolumePath(NULL, session, url);
CFRelease(url);

这篇关于如何以编程方式检索OS X中根磁盘分区的UUID?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆