问题
I need to do a complete format on a USB stick (FAT16 or FAT32), put a file on the drive, then delete it and recover the file using a C program.
Could anyone give me a hint on what should I use to accomplish this?
I understand the layouts of the FAT16/32 filesystems, the problem is that I don't know how to access the raw HD data using C (since I can't use things like fopen or mmap because the file isn't there anymore).
回答1:
This is highly operating system specific.
For Linux, you would open the raw device /dev/sdxx
. Note that there are privilege hoops to manage.
For Windows, you would use something like:
HANDLE h = CreateFile ("\\\\.\\PhysicalDriveX", GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_EXISTING,
FILE_FLAG_NO_BUFFERING | FILE_FLAG_RANDOM_ACCESS,
NULL);
where X
depends on the device.
回答2:
Just use normal filesystem operations on the disk device.
This means you need to identify the disk device first, of course. But once opened, you can even mmap()
it.
来源:https://stackoverflow.com/questions/8541848/how-to-obtain-direct-access-to-raw-hd-data-in-c