有没有办法在将成功返回给调用应用程序的同时取消创建或写入操作?

时间:2019-06-15 15:25:10

标签: winapi driver minifilter

我正在尝试创建一个伪造文件写入的驱动程序,并记录尝试次数。但是我确实希望调用应用程序认为它成功。有人对此有何建议?

我不熟悉驱动程序编程(Windows);尽管我确实具有C,C ++和操作系统(创建)的经验。

我看了一些样本,但找不到类似的东西,也没有任何看起来像我想要的NTSTATUS。

编辑1: 至于我需要一个中间驱动程序这一事实,我已经知道了。现在,minispy示例可以进行日志记录,但是不执行主要功能,而伪装操作已成功。至于Dokan的方法,我不想自己做,因为我觉得这很有趣,而且我想对注册表项也做同样的事情。

3 个答案:

答案 0 :(得分:1)

在PreWrite中,只需使用STATUS_SUCCESS完成操作并返回FLT_PREOP_COMPLETE。 写入不会执行任何操作,因为它不会到达文件系统,并且WriteFile的调用者将获得成功状态。

答案 1 :(得分:0)

困难的方法是构建KMDF intermediate driver。示例here,所有示例here的github。例如,选中MiniSpy

最简单的方法是使用Dokan创建虚拟文件系统。

建议的方法是退出项目。对于根本没有为Windows开发的人来说,Windows编程太复杂了,更不用说需要资金支持的KDMF开发了。

答案 2 :(得分:0)

您真正要做的就是“伪造”该操作,即返回STATUS_SUCCESS。或者在微型过滤器中,您将从预操作例程中返回FLT_PREOP_COMPLETE(并将IoStatus.Status字段设置为STATUS_SUCCESS)。

当您有一个过程写入一些更改,然后尝试读取它们时,这可能会变得更加复杂。如果要完全伪造此文件,则必须设法跟踪所有更改,而不必将其写入基础文件对象。对于所有可能的情况,这都是一个很难解决的问题!

相关问题