我需要在U盤(FAT16或FAT32)上做一個完整的格式,將一個文件放在驅動器上,然後刪除它並使用C程序恢復文件。如何獲取直接訪問C中的原始HD數據?
任何人都可以給我一個暗示,我應該用什麼來完成這個?
我瞭解FAT16/32文件系統的佈局,問題是我不知道如何使用C訪問原始HD數據(因爲我不能使用像fopen或mmap之類的東西,因爲文件不是'在那裏了)。
我需要在U盤(FAT16或FAT32)上做一個完整的格式,將一個文件放在驅動器上,然後刪除它並使用C程序恢復文件。如何獲取直接訪問C中的原始HD數據?
任何人都可以給我一個暗示,我應該用什麼來完成這個?
我瞭解FAT16/32文件系統的佈局,問題是我不知道如何使用C訪問原始HD數據(因爲我不能使用像fopen或mmap之類的東西,因爲文件不是'在那裏了)。
這是高度操作系統特定的。
對於Linux,您將打開原始設備/dev/sdxx
。請注意,有特權管理。
對於Windows,你會使用類似:
HANDLE h = CreateFile ("\\\\.\\PhysicalDriveX", GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_EXISTING,
FILE_FLAG_NO_BUFFERING | FILE_FLAG_RANDOM_ACCESS,
NULL);
其中X
取決於設備。
只需在磁盤設備上使用正常的文件系統操作即可。
這意味着您需要首先識別磁盤設備,當然。但一旦打開,你甚至可以mmap()
它。
感謝您的幫助! – 2011-12-18 17:17:09
我已經設置了一個類似的問題[CreateFile:直接寫入操作原始磁盤「訪問被拒絕」 - Vista,Win7](http://stackoverflow.com/q/8694713/341970)賞金。你可以幫幫我嗎? – Ali 2012-01-03 20:37:50