文件映射(File Mapping)是进程间通信(IPC)的一种方式,本文主要讲解一下大致流程和函数。 Process A: 1 创建文件映射对象 HANDLE WINAPI CreateFileMapping( HANDLE hFile, LPSECURITY_ATTRIBUTES lpAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCTSTR lpName ); 2 获得共享区域内存地址 LPVOID WINAPI MapViewOfFile( HANDLE hFileMappingObject, DWORD dwDesiredAccess, DWORD dwFileOffsetHigh, DWORD dwFileOffsetLow, SIZE_T dwNumberOfBytesToMap ); 3 结束进程结束使用共享内存后,调用UnmapViewOfFile函数以取消其地址空间内的视图: BOOL WINAPI UnmapViewOfFile( LPCVOID lpBaseAddress ); 4 关闭句柄 BOOL WINAPI CloseHandle( HANDLE hObject );
Process B; 1 在进程B中,打开已经创建的文件映射 HANDLE WINAPI OpenFileMapping( DWORD dwDesiredAccess, BOOL bInheritHandle, LPCTSTR lpName ); 2 获得共享区域内存地址MapViewOfFile 3 结束进程结束使用共享内存后,调用UnmapViewOfFile函数以取消其地址空间内的视图 4 CloseHandle关闭句柄
更过内容,查看MSDN官网: https://msdn.microsoft.com/en-us/library/aa366791(v=vs.85).aspx