我写了一个简单的过滤器驱动程序,只关心写。过滤器只记录irp_mj_写入。
过滤驱动程序会将其忽略:
如果写入长度为0字节
如果请求者是kernelmode
如果元数据中的文件名与我们感兴趣的特定文件匹配
我要捕获的是所有实际写入磁盘的写操作。
我应该关心哪些写作?
目前我正在捕获所有irp和fast-io。但捕获两者会产生一些重复。只捕获IRP,我似乎会丢失一些数据,就像只捕获快速IO一样。
我读过http://msdn.microsoft.com/en-us/library/ff548576.aspx(“irp不同于快速i/o”),但这并没有澄清我的经验数据。
我试图做的是在过滤器驱动程序级别执行“tee”的等价性。

最佳答案

似乎我误解了通过过滤器驱动程序的数据包与最终写入磁盘的数据包之间的关系。
这里的解决方案是将发送到用户模式的数据包与偏移量等更多信息相加,然后对结果写入应用一些重复数据消除检测。包也有可能出故障;因此也需要小心处理这种情况。

关于windows - Windows筛选器驱动程序:快速IO和IRP,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17538014/

10-10 20:36