2011-10-12 4 views
1

ハードディスクのセクタを読み取る必要があります。具体的には、私は次のように関数を記述しようとしています:Macで空きセクタを解析する

findFreeBlocksを - ディスク構造を分析し、与えられた長さの2つの途切れない 空きブロックを見つけます。

int型findFreeBlocks(CHAR * freeSector1、u_int64_t u_int64_t * drivePath、DWORD sectorsNeeded、* freeSector2)

パラメータ:drivePath [IN] - 論理ドライブへのパス がsectorsNeeded [IN] - 必要なフリーブロックの長さ、成功した場合 - 0:セクタ(セクタ= 512バイト )[OUT] freeSector1 - 無料 ブロック

リターンを発見第二の最初のセクタ - 最初の最初のセクタフリー ブロック[OUT] freeSector2を発見エラーコード - エラーの場合

誰かがこれを行うのに役立つAPIを教えてもらえますか?私はObjective-cの経験がありますが、C/C++も動くことができます(これは非常に低いレベルなので、それはそうだろうと推測しています)。ありがとう

+3

これは何のために必要なのですか?あなたが解決しようとしている本当の問題は何ですか?フリーセクタを検索するためのOSはほとんどありません。これは、使用するファイルシステムに依存するためです。通常、プログラムはディスク上のrawバイトではなくファイルを使用することになっています。使用されるファイルシステムによっては、その空きセクタの存在が間違っている可能性もあります。 – 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の書籍をクローズドソースツールで出荷すると、アップルの開発文化についてのボリュームを話すことになります。お金の執筆

短い説明:ファイルシステムを混乱させたい場合、ブロックデバイス上のraw IOを使用して作業するつもりである場合/dev/rdisk* 。ライブラリはありません。ほとんどの場合、あなたの時間の価値はありません。代わりに、Linuxで涼しい何かをしてください。 :)

関連する問題