【发布时间】:2011-04-29 06:55:09
【问题描述】:
我希望使用命名共享内存实现IPC。
为此,其中一个步骤是使用 CreateFileMapping() 获取 映射内存对象 的句柄。
我完全按照 MSDN 网站的建议:http://msdn.microsoft.com/en-us/library/aa366551(v=VS.85).aspx:
hFileMappingHandle = CreateFileMapping
(
INVALID_HANDLE_VALUE, // use paging file
NULL, // default security
PAGE_READWRITE, // read/write access
0, // maximum object size (high-order DWORD)
256, // maximum object size (low-order DWORD)
"Global\\MyFileMappingObject" // name of mapping object
);
DWORD dwError = GetLastError();
但是,返回的句柄始终是0x0,返回的系统错误代码是:0x5 (Access Denied.)
- 仅需要命名内存共享(不是文件共享)。
- Windows 7 x64 位操作系统
- 管理员的可用用户权限
- 开发的应用程序:64 位插件应用程序(.dll)
有没有人有同样的经历,求解决方法?我使用 MSDN 站点作为参考,所以我不认为代码有问题。
【问题讨论】:
-
不确定是不是这个原因,但你不需要将最大对象大小设置为内存页的倍数(4096字节)吗?
-
嗨 Eugene,不,问题是我没有设置 SeCreateGlobalPriviledge。
标签: c++ windows winapi windows-7 memory-mapped-files