2010-08-12 124 views
1

我伙计,可可:检测不可卸的卷

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

目前,我使用下面的代码,以确定卷是否无法卸载与否:

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或Disk Utility无法挂载 - 这些都是HFS格式。我创建它使用从上述代码的输出:

/,HFS卸载的:否,可拆卸:否
/卷/大象,HFS卸载的:否,可拆卸:否
/卷/时间机器, HFS,卸载的:否,可拆卸:否
/卷/ USBSTICK,MSDOS,无法卸载:YES,可移动:YES

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

-

问候

马尔科

回答

2

使用您确切的代码,用我自己的USB记忆棒(1GB的的Cruzer - 是的,我知道我的后面),我得到一个对于isRemovable是。

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

因此,由于条件“可以被卸载/删除”可以取决于某个事物是否实际上正在使用卷上的资源,所以很可能是因为阻止这种方法回答“继续并卸载它”。你问题中的更多背景可能有助于确定某件事情。

+0

感谢您的输入。我用更多的上下文编辑了我的帖子,并且使用USB棒自己再次尝试了代码。你有什么想法为什么它只适用于MSDOS格式的设备? – 2010-08-12 23:23:44

+0

我刚刚擦拭并重新格式化我的棍子为HFS +并重复测试。工作正常。无论是unnmountable还是isRemovable都是YES。 – 2010-08-13 18:07:19

+0

嗯...那么为什么USB棒工作和USB硬盘不是?听起来不像真正的问题。为什么相同的代码有不同的作用,这一定是有原因的。顺便说一句:我正在使用10.6.4以及最新的开发工具... – 2010-08-13 22:46:36