正在从内存中获取文件句柄

Getting file handle from memory

本文关键字:获取 文件句柄 内存      更新时间:2023-10-16

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

工作流:

  1. 加载文件

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

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

我无法再次将文件保存到HDD

MSDN上有一个我可以创建共享内存的例子:创建命名共享内存不幸的是,我不太确定这与我的分配有多相关,因为函数检索到的句柄是FileMapping句柄,缓冲区本身是LPCTSTR指针。

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

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

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