可可:检测无法修复的音量

时间:2010-08-12 15:15:02

标签: objective-c cocoa filesystems unmount

我大家,

我正在开发一个应该能够卸载卷的小应用程序。

目前,我使用以下代码来确定卷是否可以卸载:

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这样的物理可移动卷才能获得isUnountable = YES标志。 USB设备没有,尽管这些设备也是不可安装的。

你们有解决方案吗?

----编辑

我用另一个FAT格式的USB记忆棒试了一下。我有两个USB硬盘连接到我的mac,可以通过Finder或磁盘工具卸载 - 这些都是HFS格式化的。我创建了一个使用上面代码的输出:

/,hfs,unmountable:NO,可移除:NO
/体积/象,hfs,无法安装:不,可拆卸:没有
/ Volumes / Time Machine,hfs,unmountable:NO,可拆卸:NO
/ Volumes / USBSTICK,msdos,unmountable:YES,可移动:是

如果设备是FAT或MSDOS格式,该方法看起来只返回YES。这很奇怪,因为其他2(大象,时间机器)是通过USB连接的卷,必须是可移动和不可安装的。是否有其他方法可以获取该信息或我在代码中做错了什么?

-

此致

1 个答案:

答案 0 :(得分:1)

使用您的确切代码,使用我自己的USB记忆棒(1GB Cruzer - 是的,我知道我已经落后了),我对isRemovable的评价是肯定的。

虽然BOOL通常表示为YES或NO,但TRUE有效。为了确保,我也测试了它。我每次都得到isRemovable == TRUE / YES。

因此,“可以卸载/删除”的条件可能取决于某些内容是否实际上正在使用卷上的资源,这可能是因为阻止此方法回答“继续并卸载它”。您问题中的更多上下文可能有助于识别某些内容。