标签:sts 通信 ast 讲解 详细 技术 csdn 游戏 mem
Windows中利用共享内存来实现不同进程间的通信
一、msdn详细介绍
https://docs.microsoft.com/zh-cn/windows/win32/memory/sharing-files-and-memory
二、实现思路讲解:
在A进程,我们通过 CreateFileMapping()函数来创建一个文件映射对象(使用 INVAILD_HANDLE_VALUE 来不指定文件句柄),然后调用MapFileOfView()函数来将文件映射对象映射到本进程中,利用copymemory来进行内存读写。
在B进程,我们通过 OpenFileMapping()来打开,然后调用MapFileOfView()函数来将文件映射对象映射到本进程中,利用copymemory来进行内存读写。
三、应用场景:
两进程间的数据交换,比如,我们将游戏外挂代码注入到Game.exe进程中,我们另起一个外挂控制台.exe来控制外挂,此时我们就可以使用共享内存,Game.exe开辟一线程,循环读取该内存数据并标记,而console.exe则负责将用户的指令传入到内存中,这样就实现交互了。
四、注意事项:
五、源代码:
参考下面博客,注意其在B进程也调用CreateFileMapping()来创建一个已经存在的内核对象,此时,其会返回该内核对象(并不会出错,同时GetLastError()函数返回ERROR_ALREADY_EXISTS值。
https://blog.csdn.net/stpeace/article/details/39534361
标签:sts 通信 ast 讲解 详细 技术 csdn 游戏 mem
原文地址:https://www.cnblogs.com/onetrainee/p/11667416.html