2010-08-12 22 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