Max*_*Max 2 c++ winapi shared-memory
我正在尝试使用CreateFileMapping和OpenFileMapping在进程之间共享内存.这不是我想要的 - OpenFileMapping返回null而GetLastError是5 - 访问被拒绝.我有什么想法我做错了吗?名称就像MemoryTest.
编辑:
使用CreateFileMapping两次我都可以读取在其他进程中写入的数据.这是一个问题的原因是我得到错误183 - 内存区已经存在.但是,它仍然返回现有内存的句柄.
var map_handle = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(int), name.c_str());
....
var handle = MapViewOfFile(map_handle, FILE_MAP_ALL_ACCESS , 0, 0, 0)
*handle = 10;
UnMapViewOfFile(map_handle);
getchar();
Run Code Online (Sandbox Code Playgroud)
其他过程:
var map_handle = OpenFileMapping(PAGE_READWRITE, false, name.c_str())
....
var handle = MapViewOfFile(map_handle, FILE_MAP_ALL_ACCESS , 0, 0, 0) //returns null
var out = *handle;
getchar();
Run Code Online (Sandbox Code Playgroud)
这适用于第二个过程:
var map_handle = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(int), name.c_str());
....
var handle = MapViewOfFile(map_handle, FILE_MAP_ALL_ACCESS , 0, 0, 0) //returns null
var out = *handle;
getchar();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9767 次 |
| 最近记录: |