使用Windows API写入和读取可用磁盘空间

Zme*_*mey 7 windows filesystems winapi diskspace disk

是否可以使用Windows API写入磁盘上的可用群集或从中读取数据?我发现了Defrag API:https//docs.microsoft.com/en-gb/windows/desktop/FileIO/defragmenting-files

FSCTL_GET_VOLUME_BITMAP可用于获取每个群集的分配状态,FSCTL_MOVE_FILE可用于在群集之间移动。但是我找不到从自由集群读取数据或向其写入数据的方法。

更新:想到的解决方法之一是创建一个新的小文件,向其中写入一些数据,然后将其重新放置到所需位置并删除该文件(数据将保留在释放的群集中)。但这仍然不能解决阅读问题。

我想做的是某种透明的缓存,因此用户仍然可以照常使用他的NTFS分区,并且仍然将这些群集视为可用空间,但是我可以在其中存储一些数据。数据安全性无关紧要,它可以被用户操作覆盖,并且当群集再次释放时稍后将重新生成/重新下载。

And*_*SFT 4

这种方式没有简单的解决方案。

首先,您应该创建自己的驱动器分区。它可以防止操作系统或任何进程意外访问您的数据。然后CreateFileA()使用分区名称进行调用。您将获得对数据的原始访问权限。请记住,对于操作系统访问的任何分区,该功能都会失败。

您也可以使用物理驱动器执行相同的技巧。

文档