2011-09-20 55 views

回答

2

不,没有办法增加。对于任何支持的32个同时进程,Windows CE 5.0和更早版本都有一个硬性的限制为32MB的虚拟内存。它是内核的一部分。

现在值得一提的是,并非所有的分配都来自32MB。从文档(和经验):

如果调用VirtualAlloc用的dwSize> = 2 MB,flAllocationType设置为MEM_RESERVE,并flProtect设置为PAGE_NOACCESS,它会自动保留在共享内存区域内存。这保留了每个进程的虚拟内存。

这意味着您可以使用VirtualAlloc大区域并且不会影响32MB插槽的限制。

+1

谢谢。要确认:是使用WriteProcessMemory和ReadProcessMemory访问此内存的唯一方法吗? – noelicus

+1

从技术上讲,答案是“取决于”。对于CE 5.0和更早版本的共享内存,实际上并未受到保护,因此您只需读写VirtualAlloc返回的指针即可。这不是“正确”的方式,它只是操作系统的一个基本缺陷,不能保护内存使其工作。这个缺陷在CE 6.0中得到了纠正,所以直接的指针操作使得你的代码不能移植到CE 6或者7。 – ctacke