如何在C中直接访问原始高清数据?

时间:2011-12-17 01:01:48

标签: c filesystems hard-drive

我需要在USB记忆棒(FAT16或FAT32)上进行完整格式化,将文件放在驱动器上,然后将其删除并使用C程序恢复文件。

有人可以给我一个暗示我应该用什么来完成这个?

我理解FAT16 / 32文件系统的布局,问题是我不知道如何使用C访问原始高清数据(因为我不能使用像fopen或mmap这样的东西因为文件不是那里)。

2 个答案:

答案 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()