进程间通信断断续续看了很长时间了,但是始终没有进行总结,为了巩固自己对这方面的理解,也方面与大家的交流,我将会尝试写一系列的关于Windows进程间通信的博文,实乃破砖引玉。
进程是可运行的程序的实例,包含两部分,一部分是操作系统用来管理进程的内核对象,一部分是创建时系统分配的资源,主要是内存地址空间。它是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码、数据以及它可利用的系统资源(如文件、管道等)组成。多进程/多线程是Windows操作系统的一个基本特征。Microsoft Win32应用编程接口(Application Programming Interface, API)提供了大量支持应用程序间数据共享和交换的机制,这些机制行使的活动称为进程间通信(InterProcess Communication, IPC),进程通信就是指不同进程间进行数据共享和数据交换。
这一章主要是说一下windows进程间通信(InterProcess Communication )都有哪些方法。后面的若干博文会分别具体详细讲解每一种进程间通信机制的实现和应用。
进程间通信大概有如下这些:
(1)管道(异步管道与命名管道)
(2)内存映射文件(CreateFile ,OpenFile , CreateFileMaping ,MapViewOfFile等函数的使用)
(3)内存读写函数(VirtualAllocEx,WriteProcessMemory,OpenProcess,包括提权函数OpenProcessToken,LookupPrivilegeValue,AdjustTokenPrivileges等)。
(4)使用DLL通信(增加区段)
(5)使用windows剪贴板通信
(6)使用DDE(动态数据交换)
(7)使用消息WM_COPYDATA通信
(8)使用邮件槽通信
(9)Socket
(10)IPC(本地过程调用)与RPC(远程过程调用)
(11)共享内存(是windows内存映射文件的一种特殊情况)