クラスタ番号の取得

[戻る]
ゆき 2005/03/15(火) 18:15:26
毎々お世話になります。


特定のファイルについて、ファイルの内容がディスクに
格納されている場所(「クラスタ番号」でいいのでしょうか?)を
表示したいのですが、実装方法をご教授願います。

ファイルシステム(FAT,NTFS)は問いません。
また、今後はそのクラスタ領域について、デタラメなデータで
上書き(データ抹消と同意)を行いたいと考えています。

開発環境は、Windows XP Pro SP2 VC++ 6.0(MFC)です。


以上、よろしくお願い致します。

シャノン 2005/03/16(水) 21:32:50
#回答ではありません

ひょっとしたら、DDK のような低レベル API を使えば、出来るかもしれません。
が、フラグメンテーションを起こしていたりすると、一つのファイルが複数の領域に分
断されて格納されている場合もあります(これを解消して、一つのファイルを連続する
領域にまとめるのが、いわゆる「デフラグ」です)。
デフラグソフトがあるのですから、何らかの方法はあるのだと思いますが…

また、クラスタ番号を指定して書き込む際に、一歩間違えると、ファイルだけでなく、
HDD そのものをぶっ壊してしまう可能性も否定できません。

そのような手間やリスクを侵すよりは、普通に CreateFile で開いて書き込むのではダ
メなのでしょうか?

ゆき 2005/03/18(金) 19:36:14
シャノン様,アドバイスありがとうございます.

ファイルアロケーションテーブルにクラスタ番号が
記述されているらしいのですが、そのアクセス方法が
分からないで困ってます… (^^;


>そのような手間やリスクを侵すよりは、普通に CreateFile で開いて書き込むのでは
>ダメなのでしょうか?

ファイルアクセスが既に出来ない場合を想定しています.
つまり、ファイルがゴミ箱からも消去されている状態の場合です.
→ディスク内には,データ部分は実際は残っているが,アクセスはできない

wood 2005/03/18(金) 22:58:27
こんなのありました
http://www.microsoft.com/japan/windows2000/techinfo/howitworks/fileandprint/sto
rdev.asp

kuma 2005/03/21(月) 01:32:04
さらにこんなのもありました

FAT32仕様書
http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx

仔細まで文書を確認してませんが、概ね求めている情報は
記載されているのではないでしょうか。
あとは、ASPIを使ってコマンドを発行すれば実装できますよね。

ゆき 2005/03/22(火) 11:53:20
wood様、kuma様、回答ありがとうございます。

「FAT32 File System Specification」については、
只今読んでいるところですが、英語に苦労しています (^^;

(当たり前ですが)実装可能ということが分かってホッとしています。
あとは、自力で何とかしようと思います。

ありがとうございました!

古いスレッドには追加発言できません。