问题描述
我需要在U盘(FAT16或FAT32)上做一个完整的格式,将一个文件放在驱动器上,然后删除它,然后使用C程序恢复文件。任何人都可以给我一个提示,我应该用什么来完成这个任务?
我理解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
取决于设备。 / p>
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).
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.
这篇关于如何获得直接访问C中的原始高清数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!