动态映射和静态映射

先说VirtualAlloc VirtualCopy
   VirtualAlloc
首先会从我们的虚拟地址空间中申请(或者说预留)一块虚拟空间,准备接下来要用它。注意此时,可用的物理内存并没有减少,只是虚拟地址少了一块可用的区域。真正把这块之前reserved的虚拟空间映射到物理的内存区域就是由VirtualCopy来干的,此时,MMU的页表就会增加一个entry,来表示物理--虚拟的映射关系。


再说动态虚拟内存映射和静态虚拟内存映射
     OEMaddressTable
只是建立了一个一级的静态虚拟--物理的映射关系,一般给kernelNK.EXE)通过直接访问的形式来用(OALPAtoVA)
     MmMapIOSpace
VirtualAlloc +VirtualCopy)是一种动态虚拟映射的手段,一般给驱动根据当前需要(对硬件操作)动态申请并建立映射。

 

 

   内核部分就要用这个OEMaddressTable来转换,wince5.0 用户态的驱动(wince6.0驱动貌似是在内核态)就要用这个VirtualAlloc+VirtualCopy来进行地址映射。

 

 

详见:http://topic.csdn.net/u/20080918/18/f1dbb82a-dfac-484b-b298-ecdb61505ff8.html

posted @ 2010-04-29 10:52  gmh  阅读(821)  评论(0编辑  收藏  举报