我编写了一个只关心写入的简单过滤器驱动程序。过滤器只注册 IRP_MJ_WRITEs。
过滤器驱动程序削减了它不关心的内容:
- 如果写入长度为 0 字节
- 如果请求者是 KernelMode
- 如果元数据中的文件名与我们感兴趣的特定文件匹配
我要捕获的是实际上将写入磁盘的所有写入。
我应该关心哪些写入?
目前我正在捕获所有 IRP 和 FAST_IO。但同时捕获两者会产生一些重复。仅捕获 IRP,我似乎错过了一些数据,就像仅捕获 FAST_IO 一样。
我已阅读http://msdn.microsoft.com/en-us/library/ff548576.aspx(“IRP 与快速 I/O 不同”),但这并没有澄清我的经验数据。
我正在尝试做的是在过滤器驱动程序级别执行“tee”的等效性。