c++ - 从内存中获取文件句柄

标签 c++ winapi memory memory-management shared-memory

我正在尝试将一个相对较大的文件加载到内存中,并能够通过 HANDLE 访问它,例如通过 CreateFile() 检索到的文件.

工作流程:

  1. 加载文件

  2. 加载到内存中时更改几个属性

  3. > 使用有效的 HANDLE
  4. 将修改后的文件用于其他目的

我无法再次将文件保存到硬盘。

MSDN 上有一个示例,我可以在其中创建共享内存:Creating Named Shared Memory不幸的是,我不太确定这与我的任务有多大关系,因为函数检索到的句柄是一个 FileMapping 句柄,而缓冲区本身是一个 LPCTSTR 指针.

最佳答案

好吧,出于所有实际目的,您无法阻止 RAM 被交换到 HDD,所以我会给您一个同样好的解决方案。

使用 CreateFile(... , FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE) 创建一个新文件 HANDLE。这告诉操作系统内容不需要离开文件缓存 (RAM),除非 RAM 不足。我们已经确定,当 RAM 耗尽时,任何东西都可以交换到磁盘。

接下来,将源文件中的内容复制到新的临时文件中,并根据需要进行修改。

关于c++ - 从内存中获取文件句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29139327/

相关文章:

c++ - 创建文件映射错误代码 8

java - 移动应用程序中什么最重要?内存优化或快速执行

c++ - 从 vector 切换到双端队列的大小限制通常是多少?

java - 如何计算/近似递归函数的堆栈帧使用的内存?

c++ - QFTP commandFinished 发送得太早

c++ - boost::program_options 具有多个标记的配置文件选项

delphi - 如何在不更改有效文本宽度的情况下绘制缩放文本?

c# - 从另一个进程接收消息

c++ - 使用 delete 运算符删除结构中的元素

c++ - 什么时候不希望派生类的析构函数执行?