确定哪个进程在Windows中创建了共享内存

时间:2012-05-17 02:27:04

标签: winapi shared-memory

我正在研究的系统有很多进程在运行。在共享内存的上下文中,有些是服务器,有些是客户端。

他们通过CreateFileMappingMapViewOfFile创建/访问共享内存。

我最近在其中一个客户端上更改了一个结构,这导致客户端尝试映射共享内存区域,该区域比服务器进程创建的大。结果是拒绝访问。

我的问题是,我不知道哪个darn进程首先创建了内存。有没有办法访问有关共享内存的元信息,以确定需要重新编译哪个服务器程序?

要确认,它是MapViewOfFile失败,错误代码为5:访问被拒绝。

1 个答案:

答案 0 :(得分:0)

存在两种类型的共享内存:dynamic(使用CreateFileMapping ...你的场景)和static(在PE Section(s)特性中声明的内存映射)。可以在文件和进程级别上测试具有共享内存特征的PE部分的存在。

另一方面,MapViewOfFile失败的原因可能不同于映射内存的不同大小(例如凭证,内存偏移,......)