关于Objective C:可可:检测无法安装的体积

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。

因此,由于条件"可以卸载/移除"可以取决于卷上是否实际使用了某种资源,因此很可能是阻止此方法以下列方式回答的原因: "继续并卸载它。"问题中的更多上下文可能有助于识别某些内容。