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

Posted

技术标签:

【中文标题】确定 Windows 中哪个进程创建了共享内存【英文标题】:Determine which process created shared memory in Windows 【发布时间】:2012-05-17 02:27:04 【问题描述】:

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

看看***.com/questions/10622750/…

以上是关于确定 Windows 中哪个进程创建了共享内存的主要内容,如果未能解决你的问题,请参考以下文章

简单例子windows 共享内存 Demo -----

Windows中利用共享内存来实现不同进程间的通信

20155332 linux进程间通信(IPC)机制(未完成,待续)

Windows进程间共享内存通信实例

C++ 和 Java 进程之间的共享内存

2017-2018-1 学号20155209 《信息安全系统设计基础》第十周学习总结