【发布时间】:2022-10-23 18:51:25
【问题描述】:
在不使用磁盘工具CLI 包装器?
我不想使用任何包装纸与 CLI 界面交互,因为这种交互方式相当减缓和不可靠:
这是为什么我不喜欢使用 CLI 包装器的一个例子
(相比'DiskUtil CLI Wrapper 已用时间。'和'磁盘仲裁时间已过')
为我的问题实施解决方案的最佳方法是什么?
使用来自的数据IOReg?
如果是,我如何获得使用它的连接设备的 BSD 名称列表?
这是我想要得到的一个例子:
["disk0", "disk0s1", "disk0s2", "disk0s3", "disk1", "disk1s1", "disk1s2", "disk1s3", "disk1s4", "disk2", "disk2s1", "disk2s2", "disk3", "disk3s1", "disk3s1s1", "disk3s2", "disk3s3", "disk3s4", "disk3s5", "disk3s6", "disk4", "disk4s1", "disk4s2", "disk5", "disk5s1", "disk5s2", "disk6", "disk6s1", "disk6s2", "disk10", "disk10s1", "disk10s2", "disk11", "disk11s1"]
目前,我有以下内容:
static func getMountedBSDNames() -> [String] {
guard let session = DASessionCreate(nil) else { return [] }
guard let mountedVolumeURLs = FileManager.default.mountedVolumeURLs(includingResourceValuesForKeys: nil) else { return [] }
var BSDNames: [String] = []
for volumeURL in mountedVolumeURLs {
if let disk = DADiskCreateFromVolumePath(kCFAllocatorDefault, session, volumeURL as CFURL), let BSDName = DADiskGetBSDName(disk) {
BSDNames.append(
String(cString: BSDName)
)
}
}
return BSDNames
}
但在这种情况下,仅安装正在返回。
我什至希望那里有那些,那是被弹出
【问题讨论】:
标签: swift macos cocoa iokit diskarbitration