共享内存:MapViewOfFile 返回错误 5

Shared memory: MapViewOfFile returns error 5

本文关键字:错误 返回 MapViewOfFile 内存 共享      更新时间:2023-10-16

我需要一种机制来在某些线程之间共享内存(通常在同一进程中,但有时不是(。

这段代码看起来很基本,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使用具有权限FILE_MAP_ALL_ACCESS创建的句柄hSharedMemCreated成功。
  • MapViewOfFile失败,打开句柄hSharedMemOpened具有权限FILE_MAP_ALL_ACCESS

答案在评论中:

PAGE_READWRITE不是OpenFileMapping()的有效参数。您可能想要FILE_MAP_ALL_ACCESS