我一直在尝试在Windows 7中使用PC上的共享内存并获得常见错误5(拒绝访问)
我在网上搜索了一个答案,我发现了很多这些答案,并尝试实施所有针对其他人提出的相同问题的建议,但它不起作用!我甚至试图以编程方式设置权限,但都是徒劳的,因为我仍然得到了ERROR 5.
然后我尝试将Global \更改为Local \并且确实有效,但后来我无法从其他进程中读取它,所以我将它全部更改回Global \并且现在我处于ERROR 5中情景再次。
TCHAR szName[]=TEXT("Global\\MyFileMappingObject");
hMapFile = CreateFileMapping(
INVALID_HANDLE_VALUE, // use paging file
NULL, // default security
PAGE_READWRITE, // read/write access
0, // maximum object size (high-order DWORD)
BUF_SIZE, // maximum object size (low-order DWORD)
szName); // name of mapping object
if (hMapFile == NULL)
{
if (GetLastError() == 5)
MessageBoxA(NULL,"5","ERROR 5",MB_OK);
if (GetLastError() == 2)
MessageBoxA(NULL,"2","ERROR 2",MB_OK);
else if (GetLastError() == 183)
MessageBoxA(NULL,"183","ERROR 183",MB_OK);
else
MessageBoxA(NULL,"just NULL","just NULL",MB_OK);
}
我正在努力做什么;从同一个.dll创建一个共享内存,如果它不存在,如果它已经存在,只需读取它(从另一个进程)。这些dll是从一个宿主应用程序启动的,在那里我可以启动同一个.dll的多个实例进行测试。然后所有这些dll应该能够共享相同的缓冲区/数组(它是一个双*)
事情是我迷失在这里,不知道要拉什么线程。我是否需要设置权限,如果是,我该怎么做。因为我在搜索时找到并尝试过的代码片段并不适合我。我在这里找到的最接近的问题是how to access shared memory in .net application running on windows 7
问候,摩根