阅读:4984回复:6
关于 MmGetSystemAddressForMdlSafe 没有锁住页面的问题
在Passive_level的IRQ下面,MmGetSystemAddressForMdlSafe没有锁住内存。设备的Flags是DO_DIRECT_IO
以下是部分代码 case IRP_MJ_READ: pSysBuf = MmGetSystemAddressForMdlSafe(pIrp->MdlAddress, NormalPagePriority); 当我往pSysBuf 中Copy数据的时候,发现在pSysBuf+4096之后的数据有时候会被修改。 按照我的理解,MmGetSystemAddressForMdlSafe函数是将内存页面映射到系统的线性虚拟内存中,共驱动程序去操作,而x86系统的页面大小是4K, 而刚刚好pSysBuf+4096之后的数据有时候会被修改。 所以我怀疑是不是MmGetSystemAddressForMdlSafe并没有将这些页面锁住? 有没有朋友碰到我一样的情况? |
|
沙发#
发布于:2007-09-20 11:36
是啊,我知道这个函数是一个宏的啊。
但是谁能解释我的问题呢? |
|
板凳#
发布于:2007-09-21 13:42
还有人知道这个问题吗?
|
|