Minifilter和IRP_MJ_DIRECTORY_CONTROL发布后操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Minifilter和IRP_MJ_DIRECTORY_CONTROL发布后操作相关的知识,希望对你有一定的参考价值。

我正在尝试从Minifilter拦截来自特定应用程序的对FindFirstFile/ZwQueryDirectoryFile的调用。目标是使应用程序看到不存在的文件夹。因此,如果应用程序从空文件夹C:\Temp枚举文件和文件夹,则该应用程序不应看到该文件夹​​为空,而应在该目录中看到一个文件夹(我将在输出结果中提供该文件夹)。

[现在,我了解我需要修改MdlAddress指向的DirectoryBufferMdl缓冲区。基本上,我需要再向调用方返回一个FILE_BOTH_DIR_INFORMATION结构实例。问题是这些缓冲区具有固定大小,因此我无法在其中添加任何内容。

所以我的问题是:

  1. 我有什么选择。是否应该从非页面缓冲池中分配更大的内存,并在后期操作中替换DirectoryBuffer指针(与Mdl相同)?呼叫者可以访问该内存吗?

  2. 如果是这样,我应该如何使用原始缓冲区,我应该释放它吗?

  3. 如果没有,如何在用户模式下将较大的缓冲区返回给调用方?

我迷路了,任何帮助将不胜感激。

谢谢

答案

您不需要分配就分配更大的内存。如果内存没有空间来添加文件信息,则只需返回STATUS_SUCCESS。如果有可用空间,请添加您的文件信息并返回STATUS_NO_MORE_FILES。

以上是关于Minifilter和IRP_MJ_DIRECTORY_CONTROL发布后操作的主要内容,如果未能解决你的问题,请参考以下文章

Minifilter和IRP_MJ_DIRECTORY_CONTROL发布后操作

minifilter/sfilter较为精确的判断是打开还是新建操作

Minifilter 拦截FileMapping IO事件

Minifilter 拦截FileMapping IO事件

如何开始编写 Windows minifilter 驱动程序? [关闭]

Minifilter 相关