2011-10-12 123 views
1

我需要讀取硬盤扇區。具體來說,我試圖寫一個函數如下:Mac分析自由扇區磁盤

findFreeBlocks - 分析磁盤結構,找到一個給定長度的兩個不間斷 空閒塊。

INT findFreeBlocks(字符* drivePath,DWORD sectorsNeeded,u_int64_t * freeSector1,u_int64_t * freeSector2)

參數:[IN] drivePath - sectorsNeeded路徑的邏輯驅動器[IN] - 需要空閒塊的長度在扇區(扇區= 512個 字節)[OUT] freeSector1 - 的第1扇區第發現自由 塊[OUT] freeSector2 - 的第二的第一個扇區發現自由 塊

返回值:0 - 如果成功,錯誤代碼 - 如果錯誤

有人能指點我的API嗎?我有Objective-c的經驗,但C/C++也可以工作(我猜測這會是因爲這是非常低的水平)。謝謝

+3

你需要什麼這個,你試圖解決什麼是真正的問題?我非常肯定,幾乎沒有任何操作系統會爲您提供搜索空閒扇區的任何API,因爲這取決於所使用的文件系統,通常程序應該使用文件,而不是光盤上的原始字節。根據所使用的文件系統,存在的空閒扇區的假設可能甚至是錯誤的。 – PlasmaHH

回答

1

正如@PlasmaHH所指出的,像MacOS這樣的操作系統不會爲您提供Objective C或C++ API來處理物理磁盤上的扇區和磁道。 (它也不會讓您改變驅動器內部電機的速度,或將驅動器頭移動到板的中心或外部。)

如果要編寫「低級」代碼,如碎片整理程序或類似的,你必須知道你正在處理哪個文件系統。 Mac的默認HFS +沒有很多開源工具來處理它。還有一些注意事項的結構:

http://developer.apple.com/library/mac/#technotes/tn/tn1150.html

...一個工具,稱爲hfsdebug就在那裏,這有利於被否決的fileXray

http://osxbook.com/software/hfsdebug/

(沒有源儘管如此,那些聲稱自己是教育工作者,但用封閉源代碼工具發佈他的「Mac OS/X Internals」書籍的人說出了關於蘋果開發文化的雙關語(punishment)。錢令狀)

長話短說:如果你想搞亂文件系統,你將被困在塊設備上使用原始IO,在/dev/rdisk* 。沒有圖書館。這幾乎肯定不值得你花時間去用Linux做一些很酷的事情。 :)

相關問題