Windows中利用共享内存来实现不同进程间的通信
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 命令行 – 通过命令行远程管理Windows XP
- 在Windows 8 RTM中的.NET应用程序中嵌入Powershe
- windows – SSL证书存储在哪里?
- Windows 7中的SVN的Windows资源管理器列(详细视图
- .net – 不支持ScrollViewer中的ISupportIncreme
- windows – 在批处理文件中,如何判断进程是否正在
- windows – 检查运行时静态库或dll使用的是什么
- 调试 – 如何解释WinDbg中显示的异常代码?
- windows-7 – 如何在Windows 7上设置LDAP服务器?
- 在Windows Server 2008上的ASP.NET中使用Microso