【发布时间】:2017-11-07 14:06:02
【问题描述】:
我想要实现的是拦截对文件的每次写入并跟踪文件中的更改。我想跟踪写入前后的文件内容有多少不同。
到目前为止,在我的微过滤驱动程序中,我注册了 IRP_MJ_WRITE 回调,现在可以拦截对文件的写入。但是我仍然不确定如何获取[preoperation]之前的文件内容和[postoperation]之后的内容。 我在回调函数中的参数是: PCFLT_RELATED_OBJECTS、PFLT_CALLBACK_DATA 和我在这些文件中找不到与文件本身内容相关的任何内容。
【问题讨论】:
-
我从来没有写过微过滤器,但我想你可能会使用以下组合:(1)注册文件打开通知,当这种情况发生时,发出你自己的读取操作(IRP_MJ_READ ) 获取初始文件内容 (2) 当您收到每个 IRP_MJ_WRITE 时,在传递写入之前读取相应的初始内容(如果有) (3) 确定文件何时关闭(可能很棘手?)然后去读取任何未修改的内容,如果您关心的话。
-
FLT_PARAMETERSinPFLT_CALLBACK_DATA->Iopb将为您提供该 IRP 所需的参数。参考:msdn.microsoft.com/en-us/library/windows/hardware/…