如何在 minifilter 驱动程序中捕获 PathFileExists?

How to capture PathFileExists in minifilter driver?

我正在为 Win7 及更高版本编写 windows 微过滤器驱动程序。

我的目标是 捕获 PathFileExists API,在 minifilter pre-callback 和 post 中-回调。

PathFileExists API 将在内核 space 中调用 QueryOpen(我通过 procmon.exe), 但我的 minifilter 驱动程序无法识别 QueryOpen's 手术,好难过:K .

经过更多的谷歌搜索工作后,我改进了我的驱动程序代码,将以下代码添加到 FLT_OPERATION_REGISTRATION 结构中。

{
    IRP_MJ_QUERY_OPEN,
    0,
    mnflt_PreOperation,
    mnflt_PostOperation
},

但是.....还是不行回调函数mnflt_PreOperationPathFileExists API 运行.

时未调用 mnflt_PostOperation

我是否遗漏了什么或完全不正确?

感谢您提供的任何帮助!

您需要使用 IRP_MJ_NETWORK_QUERY_OPEN 而不是 IRP_MJ_QUERY_OPEN。所以你需要

{
    IRP_MJ_NETWORK_QUERY_OPEN,
    0,
    mnflt_PreOperation,
    mnflt_PostOperation
},

IRP_MJ_NETWORK_QUERY_OPEN is a fast I/O operation. It is the equivalent of the FastIoQueryOpen (not FastIoQueryNetworkOpenInfo) operation.

另读Handling IRP_MJ_NETWORK_QUERY_OPEN in a Minifilter