мне нужно добавить несколько файлов в результаты, возвращаемые FindFirstFile и FindNextFile под окнами. Возможно ли это с помощью драйвера фильтра файловой системы или какого типа драйверов?
Спасибо
мне нужно добавить несколько файлов в результаты, возвращаемые FindFirstFile и FindNextFile под окнами. Возможно ли это с помощью драйвера фильтра файловой системы или какого типа драйверов?
Спасибо
Вы можете сделать это с помощью драйвера фильтра файловой системы. Но вы можете сделать это, внедрив общесистемный API-хук. Я не пробовал это раньше, но вам действительно не нужно утруждать себя написанием драйверов и созданием нестабильной работы системы в случае порчи стека драйверов.
Как уже упоминалось, вы можете использовать драйвер фильтра файловой системы (устаревший или мини-фильтр, основанный на fltmgr
). Однако я бы настоятельно рекомендовал против общесистемного перехвата API. Простая причина: если вы делаете это в пользовательском режиме, это не будет общесистемным, и если вы используете перехватчик SSDT или какой-либо метод горячего исправления, вы рискуете стабильностью системы. Альтернативой, хотя и столь же сомнительной, как общесистемный перехват, может быть воровство точки входа. В этом случае вы используете объект устройства тома (в котором вы заинтересованы, просто прослушивайте уведомления о прикреплении или перечисляйте их при запуске), чтобы найти ответственный за него драйвер и изменить основные точки входа функции в объекте драйвера ( Ильхо уже указал вам правильное направление).
Для этого поддерживается драйвер фильтра файловой системы.
В последней версии 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
.