Brain
驱动牛犊
驱动牛犊
  • 注册日期2003-01-11
  • 最后登录2007-06-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1683回复:2

还是mj_read 读数据缓冲区 (上个帖子取分的到这来)

楼主#
更多 发布于:2003-02-13 15:07
读了几次就死机了,为何?下面是代码:

if((Irp->Flags & IRP_PAGING_IO) ||
                                                  (Irp->Flags & IRP_SYNCHRONOUS_PAGING_IO))
{                                                  
if((Irp->Flags & IRP_NOCACHE))

{
             //加密解密操作
pUserBuffer = MapUserBuffer(Irp, IrpSp->Parameters.Read.Length,&(m_b));
}
}
}

void *MapUserBuffer (IN PIRP Irp, IN ULONG Length, OUT BOOLEAN *LockedBuffer)
{
         *LockedBuffer = FALSE;
     if (Irp->MdlAddress == NULL) {
                 PMDL Mdl = IoAllocateMdl(Irp->UserBuffer, Length,
 FALSE, FALSE, Irp);
                 if (Mdl == NULL)
  return NULL;
         try {
             MmProbeAndLockPages(Mdl, Irp->RequestorMode,
 IoModifyAccess);
         }
                 except (EXCEPTION_EXECUTE_HANDLER) {
                         IoFreeMdl(Mdl);
                         Irp->MdlAddress = NULL;
                         return NULL;
         }
         *LockedBuffer = TRUE;
     }

         return MmGetSystemAddressForMdlSafe(Irp->MdlAddress,NormalPagePriority );
 }
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-02-13 15:15
呵呵,先拿分,不客气了:)
Tom_lyd
Brain
驱动牛犊
驱动牛犊
  • 注册日期2003-01-11
  • 最后登录2007-06-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-02-13 15:55
先给10分,因为这个帖子的问题我还得给,我还得再开一个帖子给分,不过,老大!您心眼可真直!说给分你就真只来要分,帖子都不帮我看看啊!!上个帖子没分你都那么帮俺细心回了,这个帖子有分你还不管了,呵呵
游客

返回顶部