如何使用DiskArbitration或其他框架在macOS上获取磁盘类型(SSD,HDD,光学)

仍然

我试图弄清楚如何使用Swift在macOS上获得一些其他磁盘属性。我对磁盘的类型(例如SSD,HDD,光学)特别感兴趣。

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

FileManager.default.mountedVolumeURLs(includingResourceValuesForKeys: nil)

然后,我遍历所有卷并使用属性键获取其他属性,例如总磁盘空间:

for volumeUrl in mountedVolumeURLs {
  if let values = try? volumeUrl.resourceValues(forKeys: [.volumeTotalCapacityKey, .volumeNameKey, .volumeIsInternalKey] {
     // Do something
  }
}

我找不到资源密钥来获取类型。然后,我看到还有一个名为的其他框架DiskArbitration

我曾经遵循以下代码来获取BSD名称,以期希望使用IOReg来找到类型,但这也无济于事(我仅使用此代码来获取错误名称,我认为DiskArbitration仅用于卸载/装载卷)。

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上的(公共)框架获取此信息?

瓦迪安

你是相当接近,有一个APIDADiskCopyDescriptionDiskArbitration返回一个字典,大量的信息

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)
            }
        }
    }
}

但据我所知,它不显示磁盘是SSD还是HD的信息,这可以通过中的IORegistry确定IOKit

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用联系人框架在iOS 9中获取所有联系人记录

如何使用Express框架在Node JS中设置cookie?

如何使用IONIC框架在中心或右边对齐按钮?

使用DiskArbitration在OSX中卸载磁盘

如何使用其他类型的Google字体?

如何使用Clang在macOS上链接Core框架?

如何使用bot框架在AAD登录后获取用户的电子邮件ID

可以启动在其他实例类型上创建的磁盘映像吗?

如何使用Atata框架在ckeditor中设置内容?

如何使用框架在Swift上的循环中设置x位置

如何从其他表中使用联接Django Rest框架获取数据

使用CoreTelephony框架在iOS 7上获取IMEI和IMSI

如何使用离子框架在IOS上获取IMEI

如何知道磁盘是SSD还是HDD

Ireboot无法识别其他SSD上的其他Windows

HDD / SSD盒中的哪个磁盘?

在其他HDD上安装Ubuntu

在使用Spring Batch框架在作业上处理文件之前,如何检查文件内容是否已更改

SSD上的OS其他硬盘上的程序,性能如何?

如何使用实体框架在SQLite中设置线程模式?

如何使用照片框架在iOS 9中获取图像元数据

在其他HDD上切换Windows后,无法从SSD引导Linux

Java Swing使用主机框架获取其他组件

将 /home 保留在 HDD 上并将其他文件移动到 SSD 中

Ubuntu 20.04:如何使用与主磁盘相同的密钥加密系统上的其他硬盘驱动器?

如何使用 Bot 框架在聊天机器人中使用 nodeJS 获取 excel 文件的路径?

使用 Bot 框架在 Microsoft Teams 上发送主动消息

如何根据其他值类型从 API 获取数据

如何从接口仅获取数组或其他类型?