阅读:1209回复:2
文件过滤器的问题
我在用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; |
|
|
沙发#
发布于:2003-08-21 20:25
总有地方出错了. 没有上下文. 无法确定.
[编辑 - 8/21/03 by lu0] |
|
|
板凳#
发布于:2003-08-22 10:28
抱歉,昨天后来上不了网,我已经解决了,结果是没有设置IRP的堆栈:(
再请教陆老大:文件更名操作是否因不同的文件系统有不同的处理方法? 偶跟了一下FAT32和NTFS的RENAME操作,发现好象不太一样的说 |
|
|