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
。
IORegを使用してタイプを見つけることを期待してBSD名を取得するためにコードをたどっていましたが、これも役に立ちませんでした(私はこのコードを使用して悪い名前を取得しているだけです.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 の (パブリック) フレームワークでこの情報を取得することは可能ですか?