引用: 引用 4 楼 wangxin_801115 的回复:
那就是说VirtualCopy 可以直接把物理内存映射到虚拟内存中
而OEMaddressTable所建立的静态虚拟--物理的映射不是必须的
也就是说比如对寄存器的映射:
可以通过VirtualAlloc申请(预留)一块虚拟内存给寄存器(如:v_pIOPregs)
然后用
VirtualCopy直接把寄存器的物理地址映射到刚才申请(预留)的虚拟地址空间
而在OEMaddressTable中所做的寄存器物理地址与虚拟地址的映射这步可以省略
引用: 引用 2 楼 songtitan 的回复:
弄清楚这个问题首先要了解VirtualCopy和VirtualAlloc这2个函数的实现和目的,以及wince下动态虚拟内存映射和静态虚拟内存映射。
先说VirtualAlloc 和VirtualCopy
VirtualAlloc 首先会从我们的虚拟地址空间中申请(或者说预留)一块虚拟空间,准备接下来要用它。注意此时,可用的物理内存并没有减少,只是虚拟地址少了一块可用的区域。
真正把这块之前reserved的虚拟空间映射到物理的内存区域就是由VirtualCopy来干的,此时,…
引用: 引用 6 楼 yy080808 的回复:
引用 4 楼 wangxin_801115 的回复:
那就是说VirtualCopy 可以直接把物理内存映射到虚拟内存中
而OEMaddressTable所建立的静态虚拟--物理的映射不是必须的
也就是说比如对寄存器的映射:
可以通过VirtualAlloc申请(预留)一块虚拟内存给寄存器(如:v_pIOPregs)
然后用
VirtualCopy直接把寄存器的物理地址映射到刚才申请(预留)的虚拟地址空间
而在OEMaddressTable中所做的寄存器物理地址与虚拟地址的映射这步…