Cocoa: detect unmountable volume
我乡亲,
我正在开发一个小型应用程序,该应用程序应该能够卸载卷。
当前,我正在使用以下代码来确定卷是否可卸载:
1 2 3 4 5 6 7 8 9 | BOOL isRemovable, isWritable, isUnmountable; NSString *description, *type; BOOL succ = [ws getFileSystemInfoForPath:[itemInfo objectForKey:@"path"] isRemovable:&isRemovable isWritable:&isWritable isUnmountable:&isUnmountable description:&description type:&type]; |
问题在于,只有诸如CD或DVD的可物理移动的卷才会获得isUnmountable = YES标志。 USB设备却不能,尽管它们也无法安装。
你们有解决方案吗?
----编辑
我用另一个FAT格式的USB记忆棒尝试了一下。我有2个USB硬盘连接到我的Mac,这些硬盘无法通过Finder或"磁盘实用程序"挂载-它们是HFS格式的。我创建了一个使用上面代码的输出:
/,hfs,不可安装:NO,可移动:NO
/ Volumes / Elephant,hfs,不可安装:NO,可移动:NO
/卷/时间机器,hfs,不可安装:NO,可移动:NO
/卷/ USBSTICK,msdos,不可安装:是,可移动:是
如果设备是FAT或MSDOS格式,则该方法仅返回YES。这很奇怪,因为其他两个(大象,时间机器)是通过USB连接的卷,必须可移动和不可卸载。有没有其他方法可以获取该信息,或者我在代码中做错了什么?
-
致谢
马可
使用我自己的USB记忆棒(一个1GB的Cruzer-是的,我知道我落后了),使用您的确切代码,我对isRemovable的回答为是。
尽管BOOL通常表示为YES或NO,但TRUE起作用。为了确保这一点,我也进行了测试。我每次都得到isRemovable == TRUE / YES。
因此,由于条件"可以卸载/移除"可以取决于卷上是否实际使用了某种资源,因此很可能是阻止此方法以下列方式回答的原因: "继续并卸载它。"问题中的更多上下文可能有助于识别某些内容。