【问题标题】:How can I increase the available memory for a process on Windows Mobile?如何增加 Windows Mobile 上进程的可用内存?
【发布时间】:2011-11-20 23:57:51
【问题描述】:

我的进程可用的虚拟内存量为 32MB,但实际 RAM 更多。有没有办法(例如函数调用或项目属性)可以增加这个限制?我发现限制非常......限制。

我正在通过调用GlobalMemoryStatusEx 查看使用情况。如果有什么东西可以设置 dwTotalVirtual 成员,那会有所帮助。

谢谢!

【问题讨论】:

    标签: c++ c winapi windows-mobile


    【解决方案1】:

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

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

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

    这意味着您可以 VirtualAlloc 大区域并在不影响您的 32MB 插槽限制的情况下使用它。

    【讨论】:

    • 谢谢。确认:是使用 WriteProcessMemory 和 ReadProcessMemory 访问此内存的唯一方法吗?
    • 从技术上讲,答案是“视情况而定”。对于 CE 5.0 和更早的版本,共享内存实际上并没有受到保护,因此您只需读取和写入 VirtualAlloc 返回的指针即可。这不是“正确”的做法,它只是操作系统的一个基本缺陷,没有保护允许它工作的内存。该缺陷已在 CE 6.0 中得到纠正,因此直接指针操作会使您的代码无法移植到 CE 6 或 7。
    猜你喜欢
    • 2013-08-07
    • 1970-01-01
    • 2019-06-04
    • 2015-11-04
    • 2021-09-27
    • 2014-05-07
    相关资源
    最近更新 更多