【问题标题】:Shell Extension - Virtual File CreationShell 扩展 - 虚拟文件创建
【发布时间】:2008-12-16 21:51:46
【问题描述】:

我想创建一个仅驻留在内存中的文件...在查看一些文档时,我看到了使用 shell 扩展作为虚拟文件的建议。我不确定这是一个可行的解决方案,但我想知道

  1. 这是一个好方法吗(或者我应该使用 ramdisk 代替)
  2. 从哪里开始阅读它的好地方

注意:这是在 Windows 平台上

【问题讨论】:

    标签: shell-extensions ramdisk


    【解决方案1】:

    据我了解,您希望您的程序创建一个“文件”,该文件仅驻留在内存中,您可以将其传递给另一个外部程序(例如 Microsoft Word)。

    AFAIK 这是不可能的,缺少 ramdrive。我建议使用临时文件夹。但是,您必须想出一个策略,以便在不再需要文件时将其删除。

    已添加:不过,您可能想查看Reparse points。我自己对它们并不熟悉,它们仅适用于 NTFS 格式的磁盘,但也许它们可以为您提供您想要的。不过,这将是很多编码。

    【讨论】:

      【解决方案2】:

      你没有说你在哪个平台上,但我猜是 Windows。 mmap() 可用吗?如果没有,我认为BerkeleyDB 已移植到 Windows,因此您应该可以使用它。 Win32 API 可能有类似于 mmap() 的东西,但我不知道。

      【讨论】:

      • 除非我弄错了,否则 mmap 文件不会将其加载到内存中,它只会为您提供一个虚拟内存指针,您可以从中访问该文件。如果您从中读取它只会进入内存(如果操作系统需要内存则进入交换)
      • 您对 mmap(3) 的看法是对的,但这对于 OP 来说可能已经足够了。无论如何,BDB 也应该可以工作。
      • 实际上是的,它是 windows,但有问题的文件是文档(word、adobe 等)....我不确定嵌入式数据库在这方面会有什么帮助。
      【解决方案3】:

      如果您想要一个仅驻留在内存中的文件,请使用命名管道或其他东西,尽管我质疑您的方案 - 您能更上一层楼并描述您想要做什么吗?

      【讨论】:

      • 我想打开一个word文档,但是word文档只存在于内存中(不在磁盘上,也不在临时文件中)
      猜你喜欢
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-29
      相关资源
      最近更新 更多