正在从内存中获取文件句柄
Getting file handle from memory
我正试图将一个相对较大的文件加载到内存中,并能够通过HANDLE
访问它,例如通过CreateFile()
检索它。
工作流:
-
加载文件
-
在内存中加载时更改几个属性
- 使用有效的
HANDLE
将修改后的文件用于其他目的
我无法再次将文件保存到HDD
MSDN上有一个我可以创建共享内存的例子:创建命名共享内存不幸的是,我不太确定这与我的分配有多相关,因为函数检索到的句柄是FileMapping
句柄,缓冲区本身是LPCTSTR
指针。
好吧,出于所有实际目的,你不能阻止RAM被交换到HDD,所以我会给你一个同样好的解决方案。
使用CreateFile(... , FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE)
创建一个新文件HANDLE
。这告诉操作系统,除非内存不足,否则内容不需要离开文件缓存(RAM)。我们已经确定,当RAM用完时,任何东西都可以交换到磁盘。
接下来,将内容从源文件复制到新的临时文件,并根据需要进行修改。
相关文章:
- 确定文件句柄是否为管道句柄
- 如何从文件句柄获取包含目录的句柄
- 如何通过连接句柄获取 STMT 句柄?
- 如何在C++程序中打开一个新的cmd.exe并获取其句柄
- 将C文件句柄分配给C 文件流
- 调用posix_spawn时关闭所有文件句柄
- 保持潜在的文件句柄
- 在先前关闭的文件句柄上的 fclose() 上出现双重释放错误
- 通过(实际)监视器的索引获取其句柄
- 正在从内存中获取文件句柄
- HANDLE(IntPtr)已过时,kernel32.dll,安全文件句柄到IntPtr
- 获取进程句柄的详细信息
- JNI 问题:DLL 中的文件句柄出现符号查找错误C++
- 获取进程句柄名称
- 有没有办法使用一个文件句柄将手表放在千个目录上
- 将文件句柄重定向到字符缓冲区
- SQLite:在 WAL 模式下持久化文件句柄
- Windows -- 继承子进程中的控制台文件句柄
- 如何获取进程的文件句柄
- 获取现有的文件句柄