【发布时间】:2018-12-13 12:06:59
【问题描述】:
我是 Windows 过滤器驱动程序的新手。从(MSDN)的示例代码中我看到的是,文件系统过滤器驱动程序具有与之关联的过滤器管理器,而进程过滤器驱动程序没有与之关联的过滤器管理器。那么为什么会有这种差异呢? 所以需要一些建议和帮助。
【问题讨论】:
我是 Windows 过滤器驱动程序的新手。从(MSDN)的示例代码中我看到的是,文件系统过滤器驱动程序具有与之关联的过滤器管理器,而进程过滤器驱动程序没有与之关联的过滤器管理器。那么为什么会有这种差异呢? 所以需要一些建议和帮助。
【问题讨论】:
看来您可能想阅读 Alex Ionescu 撰写的 Windows Internals,这将为您清除问题,从底部开始,并帮助您理解整个事情。
基本上,在过去,文件系统过滤器驱动程序的构建方式是它会位于确切的文件系统设备堆栈中的正确位置,例如 NTFS。这样它就有机会过滤 IRP。
现在,您提到的过滤器管理器 (FLTMGR) 在设备堆栈的顶部和底部都有自己的(旧版)驱动程序,它允许您注册一个回调函数,每次 IRP 被捕获时,你将有机会处理它。
进程(创建/删除)过滤有点不同,它不是使用 IRP 处理的,基本上在内核端的 NtCreateUserProcess 的调用流程中,有一个函数负责调用为这种回调注册的任何函数。
我希望它为你清除了一切。
【讨论】: