Ares
驱动小牛
驱动小牛
  • 注册日期2001-03-28
  • 最后登录2020-04-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望114点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1209回复:2

文件过滤器的问题

楼主#
更多 发布于:2003-08-21 09:41
我在用FILEMON研究文件保护,在拦截到IRP_MJ_WRITE操作之后我需要先建造一个IRP_MJ_READ的IRP来将要被修改的数据读出来,但是我产生的IRP总是无法正确地被完成,请问自己生成IRP需要处理什么信息?
下面是偶的代码

pTempIrp=IoBuildAsynchronousFsdRequest(IRP_MJ_READ,hookExt->FileSystem,pBuffer,iSize,&pIrpStack->Parameters.Write.ByteOffset,NULL);
if(NULL!=pTempIrp)
{
IoSetCompletionRoutine(pTempIrp,FilterBackupOriginData,&Event,TRUE,TRUE,TRUE);

i=pTempIrp->StackCount;
pTempIrp->StackCount++;
pTempIrp->Flags=pIrp->Flags;
//*
pIrpBackup=IoGetCurrentIrpStackLocation(pTempIrp);
/*/
pIrpBackup=IoGetNextIrpStackLocation(pTempIrp);
//*/
pIrpBackup->FileObject=pIrpStack->FileObject;
pIrpBackup->DeviceObject=pIrpStack->DeviceObject;
pIrpBackup->MajorFunction=IRP_MJ_READ;
pIrpBackup->MinorFunction=pIrpStack->MinorFunction;
pIrpBackup->Parameters.Read.ByteOffset.QuadPart=pIrpStack->Parameters.Write.ByteOffset.QuadPart;
pIrpBackup->Parameters.Read.Length=iSize;
易水
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-21 20:25
总有地方出错了. 没有上下文. 无法确定.

[编辑 -  8/21/03 by  lu0]
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
Ares
驱动小牛
驱动小牛
  • 注册日期2001-03-28
  • 最后登录2020-04-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望114点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2003-08-22 10:28
抱歉,昨天后来上不了网,我已经解决了,结果是没有设置IRP的堆栈:(
再请教陆老大:文件更名操作是否因不同的文件系统有不同的处理方法?
偶跟了一下FAT32和NTFS的RENAME操作,发现好象不太一样的说
易水
游客

返回顶部