“a”是什么;上下文“;用于Windows NT微筛选器驱动程序?

“a”是什么;上下文“;用于Windows NT微筛选器驱动程序?,windows,driver,minifilter,wdm,Windows,Driver,Minifilter,Wdm,作为微型过滤器课程的一部分,我构建了一个非常简单的微型过滤器驱动程序。我还阅读了PDF文档形式的minifilter文档,以及。这些指南解释了如何设置上下文和实例。但是,它们不能解释为什么要使用上下文和/或实例以及它们的用途。我的非常小的筛选器驱动程序对上下文和实例都使用NULL,并且仍然在运行,因此我想知道这些构造的用例。您希望对文件、卷等使用上下文的原因有很多。。当然,过滤器甚至文件系统都可以在没有它们的情况下运行,但是性能会非常差 想象一下这个场景:你是一个AV(防病毒软件)并且想要扫描一

作为微型过滤器课程的一部分,我构建了一个非常简单的微型过滤器驱动程序。我还阅读了PDF文档形式的minifilter文档,以及。这些指南解释了如何设置上下文和实例。但是,它们不能解释为什么要使用上下文和/或实例以及它们的用途。我的非常小的筛选器驱动程序对上下文和实例都使用NULL,并且仍然在运行,因此我想知道这些构造的用例。

您希望对文件、卷等使用上下文的原因有很多。。当然,过滤器甚至文件系统都可以在没有它们的情况下运行,但是性能会非常差

想象一下这个场景:你是一个AV(防病毒软件)并且想要扫描一些文件来检查它们是否包含恶意代码。 你注册了你的迷你过滤器和回调,现在你被调用了,你需要在文件打开时做出决定

其中包括几个步骤:

  • 您可以查询文件名和安全上下文
  • 您读取了文件内容
  • 或者,使用SHA256散列文件,以查看它是否与AV数据库中的文件匹配
  • 检查文件是否经过数字签名,这也是检查的一部分
  • 如果文件的PE头中有PE头,则需要对其进行解析,以查看它是什么类型的文件或可执行文件,从而帮助您做出决策
  • 您可以根据上述所有信息对文件应用策略
  • 现在,让我们假设文件是干净的,并且消失了。如果您无法保留刚才了解到的有关该文件的信息,那么下次打开该文件时,您必须重新执行该操作。你的性能会很差,你的操作系统会崩溃,慢慢地烧成灰烬

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

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

    当然,有些内容需要更新,例如,如果您注意到文件已更改,则将其标记为脏文件,并在下一次创建或清理回调时根据需要进行更新

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


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

    您希望为文件、卷等使用上下文的原因有很多。。当然,过滤器甚至文件系统都可以在没有它们的情况下运行,但是性能会非常差

    想象一下这个场景:你是一个AV(防病毒软件)并且想要扫描一些文件来检查它们是否包含恶意代码。 你注册了你的迷你过滤器和回调,现在你被调用了,你需要在文件打开时做出决定

    其中包括几个步骤:

  • 您可以查询文件名和安全上下文
  • 您读取了文件内容
  • 或者,使用SHA256散列文件,以查看它是否与AV数据库中的文件匹配
  • 检查文件是否经过数字签名,这也是检查的一部分
  • 如果文件的PE头中有PE头,则需要对其进行解析,以查看它是什么类型的文件或可执行文件,从而帮助您做出决策
  • 您可以根据上述所有信息对文件应用策略
  • 现在,让我们假设文件是干净的,并且消失了。如果您无法保留刚才了解到的有关该文件的信息,那么下次打开该文件时,您必须重新执行该操作。你的性能会很差,你的操作系统会崩溃,慢慢地烧成灰烬

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

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

    当然,有些内容需要更新,例如,如果您注意到文件已更改,则将其标记为脏文件,并在下一次创建或清理回调时根据需要进行更新

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


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

    明白了,这基本上是一种数据结构,允许程序员准确地维护内存中的状态!它不需要“生存”,但如果没有它,就很难获得好的性能。关于这个主题,我还有什么可以澄清的吗?明白了,所以它基本上是一种数据结构,允许程序员准确地维护内存中的状态!没有“生存”的必要,但如果没有它,就很难取得好的成绩。关于这个话题,我还有什么可以澄清的吗?