本文由danny发表于 http://blog.csdn.net/danny_share
说明:建议先下载本文配套工程,其中
SectionDLL、SectionMain工程、SectionASub工程,SectionBSub工程分别用于演示进程间通信的DLL工程、主进程和两个子进程
下载地址:http://download.csdn.net/detail/danny_share/7749203
注意:
1.不要F5直接运行
2.编译生成debug目录或者release目录以后,手动双击SectionMain.exe点击Test按钮即可
一. PE文件
本文主要是从使用的角度来看PE文件的节(也称段),来实现进程间通信,实际只是共享数据,和进程内存读写一样,没有监听或者通知的功能。所以对PE文件只作概览陈述。
1.Copy On Write
在Windows保护模式下,由于每个进程拥有独立的虚拟地址空间,操作系统负责把虚拟地址映射成物理地址,对于同一个可执行文件生成的不同实例,Windows采用“Copy On Write”技术实现创建时共享虚拟地址空间(此时只读),当需写入时则copy一份(此时可写),因而两者的运行互不干扰,又可以加快运行。
2.PE结构
PE文件大致结构如下:
详细结构如下(此图转载自程序人生的博客http://www.programlife.net/pe-coff-specification.html):
3.常见节
(1)Windows是通过PE-Optional-Header中的DataDirectory而不是通过名字来定位的
(2)但为了避免混淆,我们在自定义节的时候,应尽量避免使用下面的节名
(