我想要实现的是拦截对文件的每次写入并跟踪文件中的更改。我想跟踪写入前后文件内容的不同。
到目前为止,在我的minifilter驱动程序中,我注册了IRP_MJ_WRITE回调,现在可以拦截对文件的写入。但是我仍然不确定如何在[preoperation]之前和[postoperation]之后的内容中获取文件的内容。 我在回调函数中的参数是: PCFLT_RELATED_OBJECTS,PFLT_CALLBACK_DATA和我在这些内容中找不到与文件内容相关的任何内容。
答案 0 :(得分:1)
这些操作可能会更改文件中的数据:
至于你自己需要阅读的文件本身的内容。 例如,如果您指的是缓冲区,请检查this以查找有关回调数据中 IRP_MJ_WRITE 参数的更多信息。基本上缓冲区位于 Data-> Iopb-> Parameters.Write.WriteBuffer / MdlAddress
确保正确处理该内存,否则会导致BSOD。
祝你好运。