首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用DiskArbitration或其他框架获取macOS上的磁盘类型(固态硬盘、硬盘、光盘

如何使用DiskArbitration或其他框架获取macOS上的磁盘类型(固态硬盘、硬盘、光盘
EN

Stack Overflow用户
提问于 2020-12-11 02:22:39
回答 1查看 157关注 0票数 1

我正在尝试弄清楚如何使用Swift在macOS上获得一些额外的磁盘属性。我对磁盘的类型(如SSD、HDD、光驱)特别感兴趣。

我正在使用以下代码获取已装入卷的列表:

代码语言:javascript
复制
FileManager.default.mountedVolumeURLs(includingResourceValuesForKeys: nil)

然后我迭代所有卷,并使用属性键获得额外的属性,如总磁盘空间:

代码语言:javascript
复制
for volumeUrl in mountedVolumeURLs {
  if let values = try? volumeUrl.resourceValues(forKeys: [.volumeTotalCapacityKey, .volumeNameKey, .volumeIsInternalKey] {
     // Do something
  }
}

我找不到获取类型的资源键。然后我看到还有一个名为DiskArbitration的附加框架。

我习惯于跟随代码来获得BSD名称,希望通过IOReg找到类型,但这对我也没有帮助(我只是使用这段代码来获得坏名字,我认为DiskArbitration只用于卸载/挂载卷)。

代码语言:javascript
复制
if let session = DASessionCreate(kCFAllocatorDefault)
{
  let mountedVolumeURLs = FileManager.default.mountedVolumeURLs(includingResourceValuesForKeys: nil)!

  for volumeURL in mountedVolumeURLs
  {
    if let disk = DADiskCreateFromVolumePath(kCFAllocatorDefault, session, volumeURL as CFURL)
    {
      if let bsdname = DADiskGetBSDName(disk)
      {
        let bsdString = String(cString : bsdname)
        print(volumeURL.path, bsdString)
      }
    }
  }
}

有没有可能在macOS上使用(公共)框架获取这些信息?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-11 04:48:15

非常接近,在DiskArbitration中有一个DADiskCopyDescription接口,它返回一个包含大量信息的字典

代码语言:javascript
复制
if let session = DASessionCreate(kCFAllocatorDefault)
{
    let mountedVolumeURLs = FileManager.default.mountedVolumeURLs(includingResourceValuesForKeys: nil)!
    for volumeURL in mountedVolumeURLs
    {
        if let disk = DADiskCreateFromVolumePath(kCFAllocatorDefault, session, volumeURL as CFURL)
        {
            if let diskInfo = DADiskCopyDescription(disk) as? [String:Any]
            {
                print(volumeURL.path, diskInfo)
            }
        }
    }
}

但据我所知,它不会显示磁盘是固态硬盘还是硬盘的信息,这可以通过IOKit中的IORegistry来确定。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65240178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档