我有一个C++程序查找来删除硬盘驱动器上的文件。因此,程序从分区的开头开始读取,每当它看到有效的签名时,它就会读取该签名并根据文件类型找到文件大小。
然后,它将文件的起始大小和偏移量保存到数据库中。现在我想要的是当这个过程完成后将文件交给一些分析器!
我现在正在做的是将文件恢复到硬中,然后将它们的地址提供给分析器。但它太长了。
我想通过虚拟文件系统将这些文件加载到 RAM 中,它获得文件地址偏移量和文件大小,然后给出一个虚拟地址,分析器可以通过fopen()
读取该文件并且速度更快,但我不想在分区上写入文件。
事实上,这些文件已经存在于分区中,但不存在于文件系统表中。
这种方式有什么解决方案吗?
你必须知道一个简单的技巧。如您所知道的那样打电话CreateFile
,但FILE_ATTRIBUTE_TEMPORARY
传递。这是对Windows将文件保存在RAM中的强烈提示,因为您打算在使用后立即将其删除。
您也可以通过FILE_FLAG_DELETE_ON_CLOSE
,让自己的事情更轻松。