文件系统Minifilter删除驱动程序的可行性检查

时间:2014-03-26 11:50:29

标签: file-io filesystems minifilter windows-kernel wdf

我使用msdn中的delete minifilter示例作为基础: http://code.msdn.microsoft.com/windowshardware/Delete-File-System-b904651d

我需要完成的是:

  1. 获取DfPreCleanupCallback中删除候选项的句柄。
  2. 在DfPostCleanupCallback中 - 如果文件不是为获取的句柄而确定该文件应该被删除。
  3. 同样在DfPostCleanupCallback中 - 对已删除并释放句柄的文件执行某些操作。同时确保在下次进入IRP_MJ_CLEANUP时删除以避免无限循环。
  4. 我对微过滤器和过滤器管理器有一个非常模糊的理解,所以在我深入研究微过滤器世界之前,我想知道原则上是否可行。

    简短版本 - 我需要一种方法来确定文件将被删除,并对该文件执行一些操作。

2 个答案:

答案 0 :(得分:1)

您需要在预回调中执行所有处理,因为所有删除相关信息都会在清理时提升为FCB。

  

获取DfPreCleanupCallback中删除候选项的句柄。

在清理路径中重写句柄是个坏主意,因为它导致处理文件对象的计数增量,在清理过程中。而不是仅仅使用FILE_OBJECT,它被赋予预回调(例如,在使用FltReadFile的操作中)。

  

对文件进行一些操作

清理请求达到fs之后,它会在FILE_OBJECT上设置FO_CLEANUP_COMPLETE,你可以用它做什么。另外,确保文件删除只能在预回调中完成。

答案 1 :(得分:0)

正如@izlesa评论的那样,毫无疑问,您无法确定该文件是否在所有情况下都被删除。主要是如果使用缓存管理器打开文件,则可以保留对文件的引用。

如果您的问题是删除其内容,则可以在尝试删除之前将其大小设置为0。或擦拭它。或者做那些事情并转移到其他隐藏的地方。

相关问题