我正在研究的系统有很多进程在运行。在共享内存的上下文中,有些是服务器,有些是客户端。
他们通过CreateFileMapping
和MapViewOfFile
创建/访问共享内存。
我最近在其中一个客户端上更改了一个结构,这导致客户端尝试映射共享内存区域,该区域比服务器进程创建的大。结果是拒绝访问。
我的问题是,我不知道哪个darn进程首先创建了内存。有没有办法访问有关共享内存的元信息,以确定需要重新编译哪个服务器程序?
要确认,它是MapViewOfFile
失败,错误代码为5:访问被拒绝。
答案 0 :(得分:0)
存在两种类型的共享内存:dynamic(使用CreateFileMapping ...你的场景)和static(在PE Section(s)特性中声明的内存映射)。可以在文件和进程级别上测试具有共享内存特征的PE部分的存在。
另一方面,MapViewOfFile失败的原因可能不同于映射内存的不同大小(例如凭证,内存偏移,......)