共享内存:MapViewOfFile returns 错误 5

Shared memory: MapViewOfFile returns error 5

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

此代码看似非常基本,但在 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);

答案在评论里:

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