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

标签 c filesystems hard-drive

我需要对 U 盘(FAT16 或 FAT32)进行完整格式化,将文件放入驱动器,然后将其删除并使用 C 程序恢复文件。

谁能给我一个提示,告诉我应该用什么来完成这个?

我了解 FAT16/32 文件系统的布局,问题是我不知道如何使用 C 访问原始高清数据(因为我不能使用 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 取决于设备。

关于c - 如何在 C 中直接访问原始高清数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8541848/

相关文章:

c - 我在哪里可以了解微 Controller (例如 ARMv7)上 C 语言的最佳数学运算?

Python如何在不使用 super 用户权限的情况下创建pycache文件夹?

javascript - 下载后 .js 文件变大

c - IOCTL:HDIO_GET_IDENTITY 的参数无效

c# - 如何确定给定磁盘的 SATA channel ?

c - xmlNode 路径组件

c - 为什么 printf 只显示第一个字母?

无法在stm32的嵌入式c中使用sleep()

java - hdfs movefromlocal 和 copyFromLocalFile 之间的区别

c - 数据记录大小的估计