nana2046
驱动牛犊
驱动牛犊
  • 注册日期2007-02-28
  • 最后登录2009-04-10
  • 粉丝0
  • 关注0
  • 积分235分
  • 威望64点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
阅读:1120回复:3

一个简单的问题

楼主#
更多 发布于:2007-04-18 16:39
  我已在IRP_MJ_READ下获得读取到的文件数据,在Irp->MdlAddress里可以看到,请问我该如何将它取出来?即:
加密简单过程:    
  a.得到Windows传下来的Buffer   Address,    
  if   (Irp->MdlAddress)    
  {    
  SysDataBuf   =   MmGetSystemAddressForMdlSafe(Irp->MdlAddress,   NormalPagePriority);    
  }    
  else    
  {    
  SysDataBuf   =   Irp->UserBuffer;    
  }    
  b.保存明文SysDataBuf   在SysDataBufFirst    
    
  c.用你强大的算法加密SysDataBuf   -->>   MyBuf    
    
  d.把MyBuf   Copy到   SysDataBuf,    
    
  e.IoCallDriver   把密文向下传,写入HardDisk。    
    
  f.恢复内存的明文   RtlCopyMemory(SysDataBuf,SysDataBufFirst,   ulWriteLen);.  

其中,   b.保存明文SysDataBuf   在SysDataBufFirst     该怎么做?谢谢指教
nana2046
驱动牛犊
驱动牛犊
  • 注册日期2007-02-28
  • 最后登录2009-04-10
  • 粉丝0
  • 关注0
  • 积分235分
  • 威望64点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-04-20 09:46
没人回答吗,是不是我说的不清楚?
我在IRP_MJ_READ完成例程里写的是:
PVOID DataBuf = DataBuf = Irp->UserBuffer;

if(Irp->MdlAddress != NULL)
{
  DataBuf = MmGetSystemAddressForMdlSafe(Irp->MdlAddress,NormalPagePriority);
}

但是我在softice 里watch DataBuf 时softice说变量未定义.display也看不到内容,请问这是为什么?
fimp1
驱动牛犊
驱动牛犊
  • 注册日期2006-09-12
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分160分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-04-26 18:24
DataBuf定义成全局变量,试试?
chinaflyzhou
驱动牛犊
驱动牛犊
  • 注册日期2002-04-08
  • 最后登录2009-10-27
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望39点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-04-26 21:44
PVOID DataBuf = DataBuf = Irp->UserBuffer;

 为什么写两个DataBuf呢?
PVOID DataBuf;
DataBuf = Irp->UserBuffer;
试一下
游客

返回顶部