与其他文件系统筛选器驱动程序共存

文件系统筛选器驱动程序必须正确处理的最阴险问题之一是与其他筛选器驱动程序共存。 生成文件系统筛选器驱动程序以与其他文件系统筛选器驱动程序共存时,最好考虑以下问题:

  • 筛选器驱动程序在其操作中必须考虑是否存在其他筛选器驱动程序。 筛选器驱动程序执行的任何操作都应足够可靠,以便使用相同或不同的技术在附加的筛选器驱动程序中幸存下来。

  • 筛选器驱动程序可能会通过更改系统的基本行为来影响其他筛选器的行为。

  • 增加筛选器驱动程序的数量会增加稀缺资源的消耗,尤其是堆栈空间。 文件系统筛选器驱动程序必须尽量减少对此类稀缺资源的使用。 否则,恶意用户应用程序可能会利用此类弱点导致系统失败。 开发人员应特别小心完成路径和错误路径。

  • 筛选器驱动程序在发送到较低驱动程序 (筛选器驱动程序或文件系统) 应保守,并且应该在接受的内容方面是宽松的。 筛选器驱动程序应尽量确保发送到基础驱动程序的操作简单且不复杂, (在创建操作(例如) )期间不执行重命名操作。

  • 筛选器驱动程序必须谨慎锁定。 不得在文件系统调用之间保留锁。 系统的各个组件对锁排序和可阻止和无法阻止的函数做出非常精确和明确的假设。 通过添加另一层锁定来干扰这一点,很容易导致死锁。 源自 Srv.sys 的 I/O 会以特别快的速度暴露这些问题,但在正常压力测试期间也可以看到这些问题。

任何文件系统筛选器驱动程序开发人员不仅必须设计和实现与其他筛选器驱动程序完全共存,而且还要与其他筛选器驱动程序一起测试筛选器驱动程序,以确保驱动程序不会在系统中引入安全问题。