毎々お世話になります。
特定のファイルについて、ファイルの内容がディスクに
格納されている場所(「クラスタ番号」でいいのでしょうか?)を
表示したいのですが、実装方法をご教授願います。
ファイルシステム(FAT,NTFS)は問いません。
また、今後はそのクラスタ領域について、デタラメなデータで
上書き(データ抹消と同意)を行いたいと考えています。
開発環境は、Windows XP Pro SP2 VC++ 6.0(MFC)です。
以上、よろしくお願い致します。
#回答ではありません
ひょっとしたら、DDK のような低レベル API を使えば、出来るかもしれません。
が、フラグメンテーションを起こしていたりすると、一つのファイルが複数の領域に分
断されて格納されている場合もあります(これを解消して、一つのファイルを連続する
領域にまとめるのが、いわゆる「デフラグ」です)。
デフラグソフトがあるのですから、何らかの方法はあるのだと思いますが…
また、クラスタ番号を指定して書き込む際に、一歩間違えると、ファイルだけでなく、
HDD そのものをぶっ壊してしまう可能性も否定できません。
そのような手間やリスクを侵すよりは、普通に CreateFile で開いて書き込むのではダ
メなのでしょうか?
シャノン様,アドバイスありがとうございます.
ファイルアロケーションテーブルにクラスタ番号が
記述されているらしいのですが、そのアクセス方法が
分からないで困ってます… (^^;
>そのような手間やリスクを侵すよりは、普通に CreateFile で開いて書き込むのでは
>ダメなのでしょうか?
ファイルアクセスが既に出来ない場合を想定しています.
つまり、ファイルがゴミ箱からも消去されている状態の場合です.
→ディスク内には,データ部分は実際は残っているが,アクセスはできない
さらにこんなのもありました
FAT32仕様書
http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx
仔細まで文書を確認してませんが、概ね求めている情報は
記載されているのではないでしょうか。
あとは、ASPIを使ってコマンドを発行すれば実装できますよね。
wood様、kuma様、回答ありがとうございます。
「FAT32 File System Specification」については、
只今読んでいるところですが、英語に苦労しています (^^;
(当たり前ですが)実装可能ということが分かってホッとしています。
あとは、自力で何とかしようと思います。
ありがとうございました!