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 // 文件映射對象句柄
);
通過以上的函數調用,就可以實現共享內存的創建、映射、訪問和釋放。共享內存可以在不同的進程之間進行數據交換,提高進程間通信的效率。