首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

物理地址怎么释放内存

2013-03-13 
物理地址如何释放内存?我现在面临的问题是这样的。在两个IOCTL中,一个是分配内存,我调用ExAllocatePoolWith

物理地址如何释放内存?
我现在面临的问题是这样的。
在两个IOCTL中,一个是分配内存,我调用ExAllocatePoolWithTag分配了不分页的一段内存,虚拟地址为V1,然后MmGetPhysicalAddress得到对应的物理地址P1,将P1传给用户。另一个是释放内存,用户将P1传回来,但是这个时候我底层已经不保存V1值啦,如何能够获得虚拟地址V1,同时调用ExFreePool将其释放掉呢?  物理内存 虚拟内存 内存释放
[解决办法]
你必须将ExAllocatePoolWithTag分配的地址记录在驱动的Device Content空间中,一旦需要将内存Release的时候,需要该地址去Release。

你可以考虑将P1和V1都存在驱动里面,等用户将P1传回来,去寻找对应的V1去释放内存就好了。
[解决办法]
弱问一句:
这是什么操作系统啊?为甚物理地址给了用户程序?这个地址用户程序可以直接使用吗?

热点排行