lauer
驱动牛犊
驱动牛犊
  • 注册日期2004-02-04
  • 最后登录2013-01-07
  • 粉丝1
  • 关注1
  • 积分578分
  • 威望127点
  • 贡献值1点
  • 好评度57点
  • 原创分1分
  • 专家分0分
阅读:2437回复:2

在SFRead中当Length比较大时,MmGetSystemAddressForMdlSafe发生PAGE_FAULT_IN_NONPAGED_AREA蓝屏

楼主#
更多 发布于:2007-08-20 17:40
在SFRead中当Length比较大时比如18432,MmGetSystemAddressForMdlSafe发生PAGE_FAULT_IN_NONPAGED_AREA蓝屏
正在测试直接播放透明加密的avi文件,直接使用微软的mplayer2.exe
发现一旦读的Length比较大,无论MmGetSystemAddressForMdlSafe还是MmGetSystemAddressForMdl都回出现蓝屏
不知道那位大大有这方面的经历,如何解决?
lauer
驱动牛犊
驱动牛犊
  • 注册日期2004-02-04
  • 最后登录2013-01-07
  • 粉丝1
  • 关注1
  • 积分578分
  • 威望127点
  • 贡献值1点
  • 好评度57点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2007-08-20 21:19
在SFRead中当Length比较大时比如18432,MmGetSystemAddressForMdlSafe发生PAGE_FAULT_IN_NONPAGED_AREA蓝屏
发现以前一直用
    if(Irp->MdlAddress)
    {

            MyBuffer =    MmGetSystemAddressForMdlSafe(Irp->MdlAddressNormalPagePriority);
}else
if(MyBuffer==NULL&&Irp->UserBuffer)
    {
        MyBuffer = Irp->UserBuffer;

    }
类似代码,但是发现当有些Length较大时,
Irp->MdlAddress !=null
但是使用MmGetSystemAddressForMdlSafe
就会出错,同时Irp->UserBuffer也!=null
此时用Irp->UserBuffer是可以的
michaelgz
论坛版主
论坛版主
  • 注册日期2005-01-26
  • 最后登录2012-10-22
  • 粉丝1
  • 关注1
  • 积分150分
  • 威望1524点
  • 贡献值1点
  • 好评度213点
  • 原创分0分
  • 专家分2分
板凳#
发布于:2007-08-21 04:46
Re:在SFRead中当Length比较大时,MmGetSystemAddressForM
Seems like MmGetSystemAddressForMdlSafe() is called on DISPATCH_LEVEL and the MDL is not in memory.

Looks like this BSOD happened in cached READ path.

Do you do something that raised IRQL in cached READ such as using spin lock?
游客

返回顶部