2011-12-17 11 views
4

USBスティック(FAT16またはFAT32)で完全なフォーマットを実行し、ドライブにファイルを置き、それを削除してCプログラムを使用してファイルを回復する必要があります。Cでraw HDデータに直接アクセスする方法は?

誰でも私がこれを達成するために何を使用すべきかに関するヒントを与えることができますか?

私はFAT16/32ファイルシステムのレイアウトを理解していますが、Cでraw HDデータにアクセスする方法がわかりません(fopenやmmapなどのファイルを使用できないため、そこにはもういない)。

+0

私は同様の質問[CreateFile:Rawディスクへの直接書き込み操作「アクセスが拒否されました」 - Vista、Win7](http://stackoverflow.com/q/8694713/341970)に賞金を設定しました。私たちを手伝ってくれますか? – Ali

答えて

8

これはオペレーティングシステム固有のものです。

Linuxの場合、RAWデバイス/dev/sdxxを開きます。管理する特権フープがあることに注意してください。

Windowsでは、あなたのようなものを使用します。Xは、デバイスに依存し

HANDLE h = CreateFile ("\\\\.\\PhysicalDriveX", GENERIC_READ, 
        FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, 
        OPEN_EXISTING, 
        FILE_FLAG_NO_BUFFERING | FILE_FLAG_RANDOM_ACCESS, 
        NULL); 

2

ディスクデバイスで通常のファイルシステム操作を使用してください。

これはもちろん、ディスクデバイスを最初に特定する必要があることを意味します。しかし、一度開いて、あなたもmmap()することができます。

+0

あまりにもあなたの助けをありがとう! –

関連する問題