ychener
驱动牛犊
驱动牛犊
  • 注册日期2003-03-18
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望20点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
阅读:4961回复:6

关于 MmGetSystemAddressForMdlSafe 没有锁住页面的问题

楼主#
更多 发布于:2007-09-20 10:21
在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并没有将这些页面锁住?


有没有朋友碰到我一样的情况?
WQXNETQIQI
驱动大牛
驱动大牛
  • 注册日期2006-06-12
  • 最后登录2010-10-26
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望1076点
  • 贡献值0点
  • 好评度895点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2007-09-20 11:31
MmGetSystemAddressForMdlSafe其实只是个宏
代码如下:

#define MmGetSystemAddressForMdlSafe(MDL, PRIORITY)                    \
     (((MDL)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA |                    \
                        MDL_SOURCE_IS_NONPAGED_POOL)) ?                \
                             ((MDL)->MappedSystemVa) :                 \
                             (MmMapLockedPagesSpecifyCache((MDL),      \
                                                           KernelMode, \
                                                           MmCached,   \
                                                           NULL,       \
                                                           FALSE,      \
                                                           (PRIORITY))))
驱动开发者 呵呵
ychener
驱动牛犊
驱动牛犊
  • 注册日期2003-03-18
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望20点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-09-20 11:36
是啊,我知道这个函数是一个宏的啊。
但是谁能解释我的问题呢?
ychener
驱动牛犊
驱动牛犊
  • 注册日期2003-03-18
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望20点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-09-21 13:42
还有人知道这个问题吗?
plzy86
驱动牛犊
驱动牛犊
  • 注册日期2007-01-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望16点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-10-10 23:11
帮你顶,我也想知道
zzq191
驱动中牛
驱动中牛
  • 注册日期2001-08-09
  • 最后登录2018-05-29
  • 粉丝17
  • 关注0
  • 积分1041分
  • 威望716点
  • 贡献值0点
  • 好评度318点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2007-10-14 11:32
是否一次只能锁住一个页面的大小?
QQ:416331891,承接windows下应用和驱动的开发,雅虎通:zzq191, Email:zzq191@21cn.com
guenli
驱动牛犊
驱动牛犊
  • 注册日期2009-12-18
  • 最后登录2010-02-19
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望611点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2010-02-17 19:59
关注一下!等待高手回答!
游客

返回顶部