我现在面临的问题是这样的。 在两个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)

返回顶部