|
分享源码
界面截图: |
|
是否带模块: |
纯源码 |
备注说明: |
- |
前言:
正文:
- 众所周知,32位程序理论上是不能 申请/读写 超过4GB内存的,不过这里的内只能指虚拟内存。
- 如果把这个概念拓展到物理内存,情况就完全不同了。
- 虚拟内存有 大小/读写 限制,不代表物理内存有 大小/读写 限制。(虚拟内存最终是映射到物理内存的)
- 如何申请物理内存?
- 微软其实是已经提供API的:AllocateUserPhysicalPages
- 如何读写物理内存呢?
- 很可惜,应用层不能直接读写物理内存,但是微软提供了API将物理内存映射到虚拟内存:MapUserPhysicalPages
- 上面说法的正确性验证:
- 所以,AWE其实就是允许32位的程序申请物理内存(需要SeLockMemoryPrivilege权限),并允许程序将指定的物理内存映射到虚拟内存。
- 物理内存有多少取决于内存条大小。
- 所以可以利用这个方式很轻松地实现 申请超大内存/读写超大内存。
- 反复强调:这个方法并没有解除虚拟内存的限制!仅仅是允许将同一虚拟内存映射到不同的物理内存。
- 所以上面的图就很容易解释了。
源码:
AWE.e
(10.48 KB, 下载次数: 153)
|
评分
-
查看全部评分
|