Minifilter和IRP_MJ_DIRECTORY_CONTROL发布后操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Minifilter和IRP_MJ_DIRECTORY_CONTROL发布后操作相关的知识,希望对你有一定的参考价值。
我正在尝试从Minifilter拦截来自特定应用程序的对FindFirstFile/ZwQueryDirectoryFile
的调用。目标是使应用程序看到不存在的文件夹。因此,如果应用程序从空文件夹C:\Temp
枚举文件和文件夹,则该应用程序不应看到该文件夹为空,而应在该目录中看到一个文件夹(我将在输出结果中提供该文件夹)。
[现在,我了解我需要修改MdlAddress指向的DirectoryBuffer或Mdl
缓冲区。基本上,我需要再向调用方返回一个FILE_BOTH_DIR_INFORMATION
结构实例。问题是这些缓冲区具有固定大小,因此我无法在其中添加任何内容。
所以我的问题是:
我有什么选择。是否应该从非页面缓冲池中分配更大的内存,并在后期操作中替换DirectoryBuffer指针(与Mdl相同)?呼叫者可以访问该内存吗?
如果是这样,我应该如何使用原始缓冲区,我应该释放它吗?
如果没有,如何在用户模式下将较大的缓冲区返回给调用方?
我迷路了,任何帮助将不胜感激。
谢谢
您不需要分配就分配更大的内存。如果内存没有空间来添加文件信息,则只需返回STATUS_SUCCESS。如果有可用空间,请添加您的文件信息并返回STATUS_NO_MORE_FILES。
以上是关于Minifilter和IRP_MJ_DIRECTORY_CONTROL发布后操作的主要内容,如果未能解决你的问题,请参考以下文章
Minifilter和IRP_MJ_DIRECTORY_CONTROL发布后操作
minifilter/sfilter较为精确的判断是打开还是新建操作