我需要在USB记忆棒(FAT16或FAT32)上进行完整格式化,将文件放在驱动器上,然后将其删除并使用C程序恢复文件。
有人可以给我一个暗示我应该用什么来完成这个?
我理解FAT16 / 32文件系统的布局,问题是我不知道如何使用C访问原始高清数据(因为我不能使用像fopen或mmap这样的东西因为文件不是那里)。
答案 0 :(得分:8)
这是高度操作系统特定的。
对于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
取决于设备。
答案 1 :(得分:2)
只需在磁盘设备上使用普通的文件系统操作即可。
这意味着您需要首先识别磁盘设备。但是一旦打开,你甚至可以mmap()
。