IPC进程间通讯之三内存映射文件Mapping File

实践是知识的母亲,知识是生活的明灯。这篇文章主要讲述IPC进程间通讯之三内存映射文件Mapping File相关的知识,希望能为你提供帮助。
IPC进程间通信+ 共享内存Mapping                  IPC(Inter-Process Communication。进程间通信)。         文件映射(Mapping)是一种将文件内容映射到内存地址的技术,通过对映射内存,读写文件如同读写内存一般简单。
        多个进程映射同一个文件映射对象,也即多个进程映射到同一个物理存储页面,因此。当一个进程向映射内存写入数据时,其它进程能够通过映射内存读取数据。通过这个机制实现进程间通信。
                  1.内存文件映射Mapping File  :
          A进程创建一个命名的Mapping对象,并在映射内存中写入须要共享的数据。B进程通过对象名打开Mapping对象,映射该Mapping对象。从映射内存中读取数据。
        2.基本API函数 : 创建Mapping对象:           HANDLE     CreateFileMapping(
                            HANDLE       hFile,                                    //物理文件句柄
                            LPSECURITY_ATTRIBUTES     lpAttributes, //安全设置
                            DWORD       flProtect,                                       //保护设置
                            DWORD       dwMaximumSizeHigh,          //高位文件大小
                            DWORD       dwMaximumSizeLow,           //低位文件大小
                            LPCTSTR   lpName                                    //共享内存名称
);         该函数返回创建的Mapping对象。
创建映射内存:         LPVOID   MapViewOfFile(
                    HANDLE     hFileMappingObject,               //Mapping对象
                          DWORD     dwDesiredAccess,                        //存取类别
                          DWORD     dwFileOffsetHigh,                  //映射文件高位
                          DWORD     dwFileOffsetLow,                     //映射文件地位
                          SIZE_T         dwNumberOfBytesToMap        //映射字节数
);
        该函数用于创建Mapping对象的映射内存,返回映射内存。
内存复制:           VOID   CopyMemory(
                    PVOID Destination,                   //要复制内存块的目的地址
                    CONST VOID *Source,               //要复制内存块的源地址
                    SIZE_T Length                                           //复制的字节数
);         该函数用于将数据拷贝到映射内存。
【IPC进程间通讯之三内存映射文件Mapping File】打开Mapping对象:         HANDLE   OpenFileMapping(
                          DWORD   dwDesiredAccess ,   // 存取权限
                          BOOL       bInheritHandle ,        //继承设置,一般设为FALSE
                          LPCTSTR     lpName                  // Mapping对象名
);       该函数用于打开一个存在的Mapping对象。返回Mapping对象句柄。             3.牛刀小试:       先在VC6.0中执行process1程序。在执行process2程序:

IPC进程间通讯之三内存映射文件Mapping File
          执行效果:IPC进程间通讯之三内存映射文件Mapping File

文章图片

process1程序:process2 程序:

































    推荐阅读