代码如何能够一方面区分外部 USB 硬盘驱动器和固态驱动器,另一方面区分 USB 记忆棒?
我不熟悉 macOS API(或系统调用、中断、消息传递和其他内容),但我猜它会在 I/O Kit 或磁盘仲裁中?
在终端命令行上您可以使用system_profiler SPUSBDataType
并查看“可移动媒体”下列出的此信息。
我以前从未编写过 macOS 或 Swift 代码。我学到的知识足以完成这个概念验证。它只进行了双向概括,如我的问题:可移动和/或可弹出媒体与不可移动不可弹出媒体。 DMG 与 U 盘和 SD 卡混为一谈。光盘和软盘当然也是如此。我不知道是否存在一种存储类型,其中只有“可移动”和“可弹出”之一为真,但不能同时为两者......
import Cocoa
import 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),
let bsdName = DADiskGetBSDName(disk) {
let bsdString = String(cString : bsdName)
print(volumeURL.path, bsdString)
if let descDict = DADiskCopyDescription(disk) as? [String: CFTypeRef] {
let removable : Bool, ejectable : Bool
if let val = descDict["DAMediaRemovable"] as? Bool {
removable = val
if let val = descDict["DAMediaEjectable"] as? Bool {
ejectable = val
var type = ""
type += removable || ejectable ? "USB stick, SD card, etc" : "hard drive, SSD, etc";
type += " ("
type += removable ? "" : "not "
type += "removable"
type += ", "
type += ejectable ? "" : "not "
type += "ejectable"
type += ")"
print(" ", type)
}
}
}
print("\n")
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)