版块
论坛
喜欢
话题
应用
搜索
登录
注册
qiangqiang290的个人空间
访问量
0
新鲜事
帖子
资料
http://bbs3.driverdevelop.com/index.php?m=space&uid=239920
物理地址如何释放内存?
我现在面临的问题是这样的。 在两个IOCTL中,一个是分配内存,我调用ExAllocatePoolWithTag分配了不分页的一段内存,虚拟地址为V1,然后MmGetPhysicalAddress得到对应的物理地址P1,将P1传给用户。另一个是释放内存,用户将P1传回来,但是这个...
全文
回复
(
3
)
2013-01-08 17:13
来自版块 -
内核编程
◆
◆
表情
告诉我的粉丝
提 交
qiangqiang290
:
我现在面临的情况是,因为是两个IOCTL,所以应用可以多次调用分配内存,然后再最后在同一释放。 我现在的解决办法是在驱动里面维护了一个链表,将分配的内存虚拟地址V1和物理地址P1以及内存大小S1,都记录下来,然后在释放的时候,逐一查找,取得相应虚拟地址进行释放的。可以实现功能,但...
(2013-01-15 11:05)
回复
ITSailor
:
了解一下虚拟地址和物理地址的关系,你就知道怎么做了,这里按x86处理器来说明。CPU有个页表,这个页表是操作系统构造的,格式是CPU定义的,页表的基地址在CR3寄存器里。当系统访问V1的时候,处理器把V1(就是地址值)拆成几个部分,用作页表的索引从页表里找出物理地址。也就是说,页...
(2013-01-11 10:29)
回复
co63oc
:
保存到全局变量
(2013-01-10 10:40)
回复
qiangqiang290
加关注
写私信
0
关注
0
粉丝
4
帖子
返回顶部