阅读:1522回复:2
修改filemon中IRP_MJ_WRITE后系统不知道为什么系统蓝屏,各路大侠帮忙看看代码
case IRP_MJ_WRITE:
if( FilterDef.logwrites ) { if (HookDevice->Flags & DO_BUFFERED_IO) { pBuffer=(char *)Irp->AssociatedIrp.SystemBuffer; } else { if (Irp->MdlAddress) { pBuffer = (char *)MmGetSystemAddressForMdl (Irp->MdlAddress); } else { if (Irp->UserBuffer!=NULL) pBuffer=(char*)Irp->UserBuffer; } } if (pBuffer) { hookCompletion = LogRecord( TRUE, &seqNum, &dateTime, NULL, "%s\tIRP_MJ_WRITE%c\t%s\tOffset: %d Length: %d Content: %s", name, (Irp->Flags & IRP_PAGING_IO) || (Irp->Flags & IRP_SYNCHRONOUS_PAGING_IO) ? '*' : ' ', fullPathName, currentIrpStack->Parameters.Write.ByteOffset.LowPart, currentIrpStack->Parameters.Write.Length ,pBuffer); } } 想把写操作的内容在filemon应用程序中显示出来,监控FAT32磁盘还好,写操作比较少。监控NTFS时,不断出现一堆下操作,过一会系统就蓝屏重启。 还有,我随便写点大概300bytes的数据也会产生蓝屏,我看CurrentLog大小可是有64K的啊!不知道为什么。 我到底应该怎么把驱动截获的写数据传送到应用层呢,有什么方法可以传pbuffer?求各路大侠帮帮忙 ![]() |
|
沙发#
发布于:2008-04-17 08:27
缓冲区里可能都是2进制数据,%s->pbuffer
不死才怪. |
|
|
板凳#
发布于:2008-04-20 11:21
共享内存是不是个办法呢!?
|
|