Windows 中是否有一个选项可以创建一个包含在 RAM 中的字节的文件?
Is there an option in Windows to create a file with bytes contains in RAM?
有一个程序(程序 A)使用了某个文件夹中的某个特定文件。通常该文件在硬盘上。
我需要编写一个程序(程序 B)来创建这样的文件,但是这个文件应该在 RAM 中,而不是在 HDD 中。所以如果你拔掉硬盘,你就找不到文件了。
我也无权访问程序A代码。但我希望 A 将该文件解释为普通文件。
在 Windows 中可以做类似的事情吗?
让文件只存在于内存中的唯一方法是使用 RAM-drive。您可以找到免费的 RAM 驱动器和一些开源实现,但它们确实需要内核驱动程序。 NTFS 装载点将允许您将此驱动器作为驱动器 C: 上的子文件夹装载,如果需要的话。
从编程的角度来看,程序 B 唯一能做的就是在程序 A 打开文件后设置关闭时删除标志。根据 A 使用该文件的方式,您也许可以只删除该文件,如果不能,B 将不得不在文件句柄上调用 SetFileInformationByHandle(FileDispositionInfo, ...)
但这只有在程序 A 使用共享打开文件时才有效标志设置为允许删除。我从来没有测试过这个,所以我不能 100% 确定它在断电时是否能正常工作。 NTFS 确实具有确保文件系统状态正确的日记功能,但我不确定它是否适用于删除标志。
有一个程序(程序 A)使用了某个文件夹中的某个特定文件。通常该文件在硬盘上。
我需要编写一个程序(程序 B)来创建这样的文件,但是这个文件应该在 RAM 中,而不是在 HDD 中。所以如果你拔掉硬盘,你就找不到文件了。
我也无权访问程序A代码。但我希望 A 将该文件解释为普通文件。
在 Windows 中可以做类似的事情吗?
让文件只存在于内存中的唯一方法是使用 RAM-drive。您可以找到免费的 RAM 驱动器和一些开源实现,但它们确实需要内核驱动程序。 NTFS 装载点将允许您将此驱动器作为驱动器 C: 上的子文件夹装载,如果需要的话。
从编程的角度来看,程序 B 唯一能做的就是在程序 A 打开文件后设置关闭时删除标志。根据 A 使用该文件的方式,您也许可以只删除该文件,如果不能,B 将不得不在文件句柄上调用 SetFileInformationByHandle(FileDispositionInfo, ...)
但这只有在程序 A 使用共享打开文件时才有效标志设置为允许删除。我从来没有测试过这个,所以我不能 100% 确定它在断电时是否能正常工作。 NTFS 确实具有确保文件系统状态正确的日记功能,但我不确定它是否适用于删除标志。