如何在 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_PreOperation和当 PathFileExists 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.
我正在为 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_PreOperation和当 PathFileExists 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 theFastIoQueryOpen
(notFastIoQueryNetworkOpenInfo
) operation.