【发布时间】:2010-12-03 12:16:57
【问题描述】:
我已经浏览了一段时间的 WinAPI 文档,但我似乎无法找到答案。我想要实现的是给程序一个文件名,它可以打开并使用它,就像磁盘上的普通文件一样。但我希望这个对象在内存中。
我尝试使用命名管道,它们可以在某些情况下工作,但并非总是如此。我创建了一个命名管道并将其作为常规文件传递给子进程。当进程存在时,我从管道中收集数据。
program.exe \\.\pipe\input_pipe
虽然面临一些限制。其中之一是它们不可搜索。第二个限制是它们应该以完全正确的权限打开。我发现的第三个问题是,在另一端打开之前,您不能将任何数据预先放入双工管道。有没有办法克服命名管道的这些限制?
或者也许有其他类型的对象可以用CreateFile 打开,然后用ReadFile 和WriteFile 访问。到目前为止,我看到的唯一解决方案是创建文件系统驱动程序并自己实现所有功能。
为了清楚起见,我想指出我无法更改我正在运行的子程序。主要思想是给该程序一些它认为是普通文件的东西。
更新:我不是在寻找涉及安装任何外部软件的解决方案。
【问题讨论】:
-
为什么要它在内存中?
-
@Len:两个原因。出于性能原因,我不希望任何人看到此文件。
-
性能原因是假的。在 Windows 上,当您分配内存时,您会分配磁盘。分页文件。您永远不会写入磁盘,而是写入 RAM。如果它的读取速度足够快,它也会从 RAM 中读取。文件系统缓存。大多数 32 位机器上大约 1 GB,64 位机器上更多。