【发布时间】:2018-07-01 02:54:37
【问题描述】:
我想使用CreateFileMapping 创建内存映射区域,而不绑定任何特定的磁盘文件,但绑定(使用MapViewOfFileEx)到特定的内存地址。此类区域的保护需要从一开始就只读。然后,我无法将数据写入这样的区域。如果要为特定磁盘文件创建此区域,则初始数据将来自文件内容。如何用初始数据填充这个只读区域?
示例:
大多数 Windows 进程都有自创建以来已映射(且未绑定到任何文件路径)和只读的内存区域,它们包含数据。这是如何实现的?这些区域是如何填充数据的?
【问题讨论】:
-
“绑定(使用 MapViewOfFileEx)到特定进程内存地址” 不清楚你的意思。您只能将共享内存映射到您自己的进程,而不是其他进程。听起来像XY problem。你对这一切的实际目标是什么?
-
编辑更清晰
-
是什么让您相信“大多数 Windows 进程都有映射的内存区域(并且不绑定到任何文件路径)并且自创建以来只读”?你有什么证据证明这个说法?
-
我看到这个使用调试器,一些内存区域映射到一些文件路径,一些不包含文件路径。但问题不在于证据,而在于如何制作这样的区域。
-
他们首先使用读写保护映射部分,然后使用只读映射
标签: c++ winapi memory-management