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

时间:2018-12-26 13:35:33

标签: minifilter

我正在为Win7和更高版本编写Windows minifilter驱动程序。

我的目标是在微型过滤器的预回调和后回调中捕获 PathFileExists API。

PathFileExists API将在内核空间中调用 QueryOpen (我是由procmon.exe找到的),但是我的小型过滤器驱动程序无法识别 QueryOpen 的  操作,太可悲了:K。

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

{
    IRP_MJ_QUERY_OPEN,
    0,
    mnflt_PreOperation,
    mnflt_PostOperation
},

但是..... 它仍然不起作用。时未调用回调函数 mnflt_PreOperation mnflt_PostOperation 正在运行PathFileExists API。

我会错过某些东西还是完全不正确?

感谢您能提供的任何帮助!

1 个答案:

答案 0 :(得分:0)

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

{
    IRP_MJ_NETWORK_QUERY_OPEN,
    0,
    mnflt_PreOperation,
    mnflt_PostOperation
},
  

IRP_MJ_NETWORK_QUERY_OPEN是一种快速的I / O操作。它是   等效于 FastIoQueryOpen (不是FastIoQueryNetworkOpenInfo)   操作。

也请阅读Handling IRP_MJ_NETWORK_QUERY_OPEN in a Minifilter