什么类型的Windows设备驱动程序可以修改FindFirstFile和FindNextFile?

时间:2011-06-02 14:08:33

标签: c++ c windows device-driver

我需要在Windows下的FindFirstFile和FindNextFile返回的结果中添加一些文件。这可能是由文件系统过滤器驱动程序或什么类型的驱动程序?

谢谢

2 个答案:

答案 0 :(得分:1)

您可以通过文件系统过滤器驱动程序执行此操作。但您可以通过实现系统范围的API挂钩来实现此目的。我之前没有尝试过,但你真的不需要在编写驱动程序堆栈的情况下编写驱动程序并使系统不稳定。

System Wide API Hooking

API Hooking Revealed

答案 1 :(得分:0)

正如所指出的,您可以使用文件系统过滤器驱动程序(传统或迷你过滤器,基于fltmgr)。但是,我强烈建议反对系统范围的API挂钩。原因很简单:如果你在usermode中执行它,它实际上并不是系统范围的,如果你使用SSDT-hook或一些hotpatching方法,那么你将面临系统稳定性的风险。另一种方法虽然与系统范围的挂钩同样阴暗,但却是入口点偷窃。在这种情况下,您使用卷的设备对象(您感兴趣的只是监听附加通知或在启动时枚举它们)以找到负责它的驱动程序并修改驱动程序对象中的主要功能入口点( Ilho已经指出了你正确的方向。

文件系统过滤器驱动程序是支持的方法。

在最新的Windows 7 WDK中,7600.16385.1\src\filesys\miniFilter\minispy下的示例提供了一个很好的起点。对于私人来说,迷你过滤器的最大问题是为驾驶员分配高度来加载。因为仅使用任何高度可能会导致BSOD - 并且在FSFD的情况下,您甚至可能冒着数据完整性的风险(尽管内核会介入BSOD以防止这种情况发生)。您只需假冒IRP_MN_QUERY_DIRECTORY - 这是您在处理IRP_MJ_DIRECTORY_CONTROL主要控制代码时所寻找的次要控制代码。只要您不需要允许打开,读取或写入文件等,您就可以通过其他所有其他操作。如何做到这一点可以在7600.16385.1\src\filesys\miniFilter\passThrough示例源中看到。