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 格式的 U 盘试​​了一下。我有 2 个 USB 硬盘连接到我的 mac,这些硬盘无法通过 Finder 或磁盘实用程序安装 - 这些是 HFS 格式的。我创建了一个使用上面代码的输出:

/,hfs,不可安装:否,可移动:否
/Volumes/Elephant,hfs,不可安装:否,可移动:否
/Volumes/Time Machine,hfs,不可安装:否,可移动:否
/Volumes/USBSTICK,msdos,不可安装:是,可拆卸:是

看起来该方法仅在设备为 FAT 或 MSDOS 格式时才返回 YES。这很奇怪,因为其他 2 个(Elephant、Time Machine)是通过 USB 连接的卷,并且必须是可移动和不可安装的。还有其他方法可以获取该信息还是我在代码中做错了什么?

--

问候

马可

4

1 回答 1

1

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

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

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

于 2010-08-12T18:55:26.977 回答