带有ERROR 5的Windows 7中的PC上的共享内存

时间:2014-02-07 19:12:22

标签: c++ dll windows-7 shared-memory

我一直在尝试在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

问候,摩根

0 个答案:

没有答案