有几种方法取决于您的任务的具体情况。
如果您需要使用文件系统(即通过文件系统 API 函数和类),并且希望它快速运行,那么(正如我在回复您之前的问题时建议的那样)您需要创建一个 RAMDisk 驱动程序。Windows Driver Kit 包括一个示例驱动程序,(巧合?)名称为“RamDisk”。但是,驱动程序开发很棘手,如果示例出现问题或者您需要对其进行扩展,您将需要深入研究内核模式开发(或聘请某人来完成这项工作)。为什么是内核模式?正如您在 Dokan 中看到的那样,切换回用户模式来存储数据会导致严重的减速。
如果您只需要使用 Stream 类方便地管理内存中的一堆文件(有可能将所有这些文件刷新到磁盘),那么您可以使用其中一个虚拟文件系统。我们的SolFS(应用程序版)是您可以使用的此类产品之一(我还记得 CodeBase 文件系统,但它们似乎没有提供评估版)。SolFS 似乎很适合您的任务,所以如果您也这么认为,您可以私下联系我(请参阅我的个人资料)寻求帮助。
要回答您的问题:
不,内存映射文件(MMF)实际上是磁盘上的文件(包括虚拟磁盘,如果有的话),不能通过文件系统 API 而是直接使用内存操作来访问。对于大多数文件操作,MMF 往往更快,这就是它们经常被提及的原因。
我们的 Callback File System 或 CallbackDisk 产品(参见virtual storage line)是一种替代方案,但是,正如我在第一段中提到的,由于用户模式上下文切换,它们不会解决您的问题。
更新:
我认为驱动程序在内存中有副本并在需要时异步执行磁盘写入没有障碍。但这需要修改示例 RAMDisk 驱动程序(这涉及到相当多的内核模式编程)。
使用 SolFS 或其他虚拟文件系统,您也可以在磁盘上拥有存储的副本。在虚拟文件系统的情况下,使用磁盘上的容器文件可能会给您带来令人满意的结果(因为虚拟文件系统通常具有内存缓存)并且您根本不需要保留内存中的副本。