我需要一种机制来在一些线程之间共享内存(通常是在同一个进程中,但有时不是)。
此代码看起来非常基本,但在MapViewOfFile上出现错误5(访问被拒绝)时失败。
HANDLE hSharedMemCreated = CreateFileMapping(
INVALID_HANDLE_VALUE, // use paging file
NULL, // default security
PAGE_READWRITE, // read/write access
0, // maximum object size (high-order DWORD)
10000, // maximum object size (low-order DWORD)
"testFileMapping"); // name of mapping object
HANDLE hSharedMemOpened = OpenFileMapping(
PAGE_READWRITE, // read/write access
FALSE,
"testFileMapping"
);
void* location = MapViewOfFile(
hSharedMemOpened, // handle to map object
FILE_MAP_ALL_ACCESS, // read/write permission
0,
0,
10);MapViewOfFile成功地使用打开的句柄hSharedMemOpened和权限FILE_MAP_READ。MapViewOfFile成功地使用创建的句柄hSharedMemCreated和权限FILE_MAP_ALL_ACCESS。MapViewOfFile与打开的句柄hSharedMemOpened和权限FILE_MAP_ALL_ACCESS一起失败。发布于 2018-10-02 18:56:01
答案是在评论中:
PAGE_READWRITE不是OpenFileMapping()的有效参数。您可能需要的是FILE_MAP_ALL_ACCESS。
https://stackoverflow.com/questions/52614485
复制相似问题