CreateFileMapping函数实现了共享内存,其用法如下:
HANDLE CreateFileMapping(
HANDLE hFile, // 文件句柄,可为INVALID_HANDLE_VALUE
LPSECURITY_ATTRIBUTES lpAttributes,// 安全属性,NULL表示使用默认安全描述符
DWORD flProtect, // 内存保护标志,如PAGE_READWRITE
DWORD dwMaximumSizeHigh, // 文件映射对象的最大大小高32位
DWORD dwMaximumSizeLow, // 文件映射对象的最大大小低32位
LPCTSTR lpName // 文件映射对象的名称
);
LPVOID MapViewOfFile(
HANDLE hFileMappingObject, // 文件映射对象句柄
DWORD dwDesiredAccess, // 访问权限,如FILE_MAP_ALL_ACCESS
DWORD dwFileOffsetHigh, // 文件偏移高32位
DWORD dwFileOffsetLow, // 文件偏移低32位
SIZE_T dwNumberOfBytesToMap // 映射的字节数
);
BOOL UnmapViewOfFile(
LPCVOID lpBaseAddress // 共享内存的基地址
);
BOOL CloseHandle(
HANDLE hObject // 文件映射对象句柄
);
通过以上的函数调用,就可以实现共享内存的创建、映射、访问和释放。共享内存可以在不同的进程之间进行数据交换,提高进程间通信的效率。