Приветствую, уважаемые!
Заранее прошу сильно не пинать за ламерские вопросы, в поиске был, пока тема для меня новая, потому уповаю на ваши пинки.
Задача стоит простая: ознакомиться на личном примере с написанием простейшего фильтра файловой системы. Фильтр, собственно, должен делать только одно: если запрошенный объект файловой системы (файл, папка) удовлетворяет каким-то критериям, то запретить к нему доступ. Вопросы буквально следующие:
1. Я правильно понимаю, что надо ставить обработчик на IRP_MJ_CREATE, и возвращать
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
если мы хотим запретить доступ к объекту?
2. Посмотрел исходник sfilter из IFS SDK — там черт ногу сломит. Сильно подозреваю, что существует некая базовая совсем минимальная функциональность, которую мне надо реализовать. Пните в нужном направлении, плз.
3. Как правильно осуществлять обмен данными между фильтром и программой user-mode? Задача в общем-то типовая: программа хранит список правил фильтрации и при добавлении/удалении/изменении правила должна как-то сообщить об этом драйверу. Сильно подозреваю, что дергать прогу из драйвера на каждый IRP_MJ_CREATE — это ну совсем атас.
4. Я правильно понимаю, что функциональность minifilter поддерживается начиная с WinXP SP2? И если да, то стало быть единственный путь, позволяющий фильтровать файловую систему на WinXP ниже SP2 — это полноценный file system filter driver?
5. И последний: подозреваю, что времени на грамотное вхождение в тему уйдет просто масса, потому как бы два подвопроса: а) что посоветуете почитать _онлайн_ и, б) сколько будет стоить разработка драйвер-фильтра с подобной функциональностью (надо лишь запрещать достп к объектам файловой системы, если матчится правило, например, запретить доступ к "C:\Windows", и чтобы этой папки вообще не было видно в файловой системе, как если бы ее не было)?
Извиняюсь за обилие вопросов, но плодить кучу маленьких ламерских топиков имхо еще хуже

Буду благодарен за ваши ответы.
<< Рабство не отменено — оно сменилось 8-часовым рабочим днем. >>