C++ 迷你过滤器无法阻止由';Windows照片&x27;

C++ 迷你过滤器无法阻止由';Windows照片&x27;,c++,c,windows,driver,minifilter,C++,C,Windows,Driver,Minifilter,我已经编写了一个迷你过滤器,它可以相对成功地屏蔽所有JPG图像。 “Windows照片”打开文件时除外。迷你过滤器已注册到所有MJ_CREATE,在WinDbg中,当Windows照片打开时,我可以看到我的代码被调用以阻止JPG图像。但是,映像仍然成功加载 术后回拨: if (RtlCompareUnicodeString(&fileDetails->Extension, &jpgExt, TRUE) == 0) { DbgPrint("Blocking JPG

我已经编写了一个迷你过滤器,它可以相对成功地屏蔽所有JPG图像。 “Windows照片”打开文件时除外。迷你过滤器已注册到所有MJ_CREATE,在WinDbg中,当Windows照片打开时,我可以看到我的代码被调用以阻止JPG图像。但是,映像仍然成功加载

术后回拨:

if (RtlCompareUnicodeString(&fileDetails->Extension, &jpgExt, TRUE) == 0)
{

    DbgPrint("Blocking JPG file...\n");
    FltCancelFileOpen(FltObjects->Instance, FltObjects->FileObject);

    Data->IoStatus.Status = STATUS_ACCESS_DENIED;
    Data->IoStatus.Information = 0;

    FltReleaseFileNameInformation(fileDetails);

    return FLT_POSTOP_FINISHED_PROCESSING;
}
过滤器启动参数:

StartType = 0
Class = "ActivityMonitor"
Altitude= "370030"
测试环境:

在加载过滤器之前,将复制图像。安装过滤器后,系统将重新启动

问题:

系统重新启动后,Windows照片仍可访问图像。(过滤器在启动时加载,因此从技术上讲,映像应该在重新启动后被阻止)

成功阻止所有其他操作,例如(复制、粘贴、使用其他程序(如paint)打开)。在引导后尝试打开或传输的任何新JPG映像也会被成功阻止

我想知道我错过了什么?是否有些映像加载得太早以至于绕过了FilterManager?是否有我可能丢失的IRP?我现在的最终目标是阻止加载所有JPG(如果可能的话,包括缩略图)

非常感谢所有花时间阅读我的问题的人,以及所有能够提供帮助的人

干杯


布莱斯·伍兹(Bryce Woods)

事实上,Windows 10可以缓存图像及其缩略图,并将其存储在“.db”文件中。我开始阻止这些文件,它解决了我的问题