Swift 如何使用DiskArbitration或其他框架在macOS上获取磁盘类型(SSD、HDD、光盘)
我正试图弄清楚如何使用Swift在macOS上获得一些额外的磁盘属性。我对磁盘的类型特别感兴趣(如SSD、HDD、光盘) 我使用以下代码获取已装入卷的列表:Swift 如何使用DiskArbitration或其他框架在macOS上获取磁盘类型(SSD、HDD、光盘),swift,macos,diskarbitration,Swift,Macos,Diskarbitration,我正试图弄清楚如何使用Swift在macOS上获得一些额外的磁盘属性。我对磁盘的类型特别感兴趣(如SSD、HDD、光盘) 我使用以下代码获取已装入卷的列表: FileManager.default.mountedVolumeURLs(includingResourceValuesForKeys: nil) 然后,我迭代所有卷,并使用属性键获取其他属性,如总磁盘空间: for volumeUrl in mountedVolumeURLs { if let values = try? volu
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仅用于卸载/装载卷)
是否可以在macOS上使用(公共)框架获取此信息?您非常接近,在
DiskArbitration
中有一个APIDADiskCopyDescription
,它返回一个包含大量信息的字典
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的信息,这可以通过代码< IOKit > /COD>中的IORIGRIGE来确定。谢谢,这应该是一个很好的起点。我们如何才能获得C++中的所有卷URL?
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)
}
}
}
}