我正在为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。
我会错过某些东西还是完全不正确?
感谢您能提供的任何帮助!
答案 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
) 操作。