Windows中是否可以使用RAM中包含字节的文件来创建文件?

时间:2019-04-25 10:14:53

标签: windows winapi filesystems

有一个程序(程序A),该程序使用某个文件夹中的某些特定文件。通常,该文件位于硬盘上。

我需要编写一个可以创建此类文件的程序(程序B),但是该文件实际上应位于RAM中,而不是HDD上。因此,如果拔下HDD,则找不到该文件。

我也无法访问程序A代码。但是我希望A将该文件解释为普通文件。

在Windows中是否可以做类似的事情?

1 个答案:

答案 0 :(得分:1)

只有内存中文件的唯一方法是使用RAM-drive。您可以找到免费的RAM驱动器以及可能的一些开源实现,但是它们确实需要内核驱动程序。 NTFS挂载点将使您可以将此驱动器作为子文件夹挂载在驱动器C:上。

从编程的角度来看,程序B唯一能做的就是在程序A打开文件后设置关闭时删除标志。根据A使用文件的方式,您也许可以删除该文件,否则,B必须在文件句柄上调用SetFileInformationByHandle(FileDispositionInfo, ...),但这仅在程序A使用共享打开文件的情况下才有效。标志设置为允许删除。我从未对此进行过测试,因此我不确定100%断电是否可以正常工作。 NTFS确实具有日记功能,可以确保文件系统状态正确,但是我不确定它是否适用于删除标志。