Я пытаюсь перехватить вызовы на FindFirstFile/ZwQueryDirectoryFile
из указанного c приложения от Minifilter. Цель состоит в том, чтобы приложение увидело папку, которая не существует. Поэтому, если приложение перечисляет файлы и папки из пустой папки C:\Temp
, это приложение не должно видеть, что папка пуста, вместо этого оно должно видеть папку в этом каталоге (что я предоставлю в результате вывода).
Теперь я понимаю, что мне нужно изменить DirectoryBuffer или Mdl
буфер, указанный MdlAddress. По сути, мне нужно вернуть еще один FILE_BOTH_DIR_INFORMATION
экземпляр структуры вызывающей стороне. Проблема в том, что эти буферы имеют фиксированный размер, поэтому я не могу ничего добавить в них.
Итак, мой вопрос:
Какие варианты у меня есть. Должен ли я выделить больший объем памяти из невыгружаемого пула и заменить указатель DirectoryBuffer в пост-операции (то же самое с Mdl)? Сможет ли звонящий получить доступ к этой памяти?
Если так, что мне делать с исходным буфером, должен ли я его освободить?
Если нет, как я могу вернуть больший буфер вызывающей стороне в пользовательском режиме?
Я потерян, любая помощь будет очень полезна оценил.
Спасибо