关于 Windows NT 微筛选器驱动程序的"context"用于什么?



我构建了一个非常简单的微型驱动程序,这是有关minifiters课程的一部分。我还阅读了Microsoft提供的以PDF DOC的形式以及此参考文献的小型文档。这些指南解释了如何设置上下文和实例。但是,他们没有解释为什么人们会使用上下文和/或实例以及它们是的内容。我的很小的过滤器驱动程序在上下文和实例上都使用了null,并且仍在运行,所以我想知道这些构造的用例。

有很多原因您想使用上下文来用于文件,卷等。当然,过滤器,甚至文件系统都可以在没有它们的情况下运行,但是性能真的很差。<<<<<<<<<<<<<<

想象一下这种情况:您是AV(防病毒),想扫描一些文件以检查它们是否包含恶意代码。您注册了您的缩写器和回调,现在被称为您,需要在文件打开时在文件上做出决定。

涉及几个步骤:

  1. 您查询文件名和安全上下文
  2. 您读取文件内容
  3. 另外,用SHA256将文件放置,以查看它是否在AV数据库中匹配,例如
  4. 您检查文件是否是数字签名的,也是支票的一部分
  5. 您可以解析文件的PE标头,如果它有一个可以看到哪种文件或可执行文件来帮助您做出决定
  6. 您根据上述所有信息在文件上应用策略

现在让我们假设文件很干净并且消失了。如果您不能坚持刚刚了解该文件的信息,下次打开文件时,您将必须重新进行一次重新进行。您的性能会很烂,您的操作系统会崩溃并缓慢地燃烧到地面上。

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

现在,您已经拥有有关文件的所有信息,就可以将所有信息存储在上下文中,然后将其与此文件关联。下次您看到文件时,您只需查询其上下文并拥有所需的所有信息即可。

当然需要更新某些内容,例如,如果您注意到文件已更改,则在下一个创建或清理回调中将其标记为脏和更新。

另外,您可以使用缓存,在该缓存中,该文件在永久关闭后,Minifilter希望释放与文件相关的上下文,您可以自己保存它。现在,下次打开文件时,您会查找文件的上下文(NTFS支持文件的唯一文件ID),并将其与您的文件关联,并立即知道您需要了解的有关该文件的所有信息

这只是一种用法,但是现在您可以考虑更多有用的情况。

最新更新