什么是"背景"用于Windows NT MiniFilter驱动程序?

时间:2017-12-20 07:04:59

标签: windows driver minifilter wdm

我制作了一个非常简单的minifilter驱动程序,作为微过滤器课程的一部分。我还阅读了PDF文档形式的minifilter文档that Microsoft provides以及this reference。这些指南介绍了如何设置上下文和实例。但是,他们没有解释为什么会使用上下文和/或实例以及它们的用途。我的非常小的过滤器驱动程序对上下文和实例都使用NULL并且仍在运行,因此我想知道这些构造的用例。

1 个答案:

答案 0 :(得分:1)

有很多原因可以让你想要为文件,卷等使用上下文。当然,过滤器甚至文件系统都可以在没有它们的情况下运行,但性能会非常糟糕。

想象一下这种情况:您是AV(AntiVirus)并且想要扫描一些文件以检查它们是否包含恶意代码。 你注册你的minifilter和回调,现在你被调用,你需要在文件打开时做出决定。

涉及以下几个步骤:

  1. 您查询文件名和安全上下文
  2. 您阅读了文件内容
  3. 或者使用SHA256对文件进行散列,以查看它是否与AV数据库匹配,例如
  4. 您检查文件是否经过数字签名,也是检查的一部分
  5. 解析文件的PE标头(如果有的话),以查看它可以帮助您做出决定的文件或可执行文件
  6. 您根据上述所有信息在文件中应用您的政策
  7. 现在让我们假设文件干净并且消失了。如果您无法保留刚刚获悉的有关该文件的信息,则下次打开该文件时,您将不得不重新进行重新操作。你的表现会很糟糕,你的操作系统会崩溃并慢慢燃烧到地面。

    这就是上下文派上用场的地方。

    现在您已拥有有关该文件的所有信息,您可以将所有这些信息存储在与此文件关联的上下文中。下次您看到该文件时,您只需查询其上下文并获得所需的所有信息。

    当然有些事情需要更新,例如,如果您注意到文件已被更改,那么您将其标记为脏并在下一个Create或Cleanup回调中根据需要进行更新。

    或者你可以使用缓存,在文件关闭之后,minifilter想要释放你与文件关联的上下文,你可以自己保存它。 现在,下次打开文件时,您将查找文件的上下文(NTFS支持文件的唯一文件ID),并将其与您的文件关联,并立即了解您需要了解的有关该文件的所有信息

    这只是一种用法,但现在您可以自己考虑更多有用的场景。