本文介绍了如何获得直接访问C中的原始高清数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在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中的原始高清数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 22:35