Здравствуйте, Exkurs, Вы писали:
E>Кто — нибудь их писал, у кого есть их примеры и какие ограничения есть для такого вида драйверов ?
E>Могут ли быть tightly coupled drivers не для PnP драйверов ?
в наших проектах последние 4 года обычно работает связка из 2-х tightly coupled drivers:
первый драйвер — настоящий file system filter driver
второй драйвер — функциональный драйвер реализующий собственно всю логику, клиент 1го драйвера
на фильтре лежат стандартные задачи: приаттачиться везде где нужно, следить за всем чем нужно (EX: mount events) и предоставить в конечном счете удобный для использования функциональным драйвером сервис:
— конструирование и кэш имен файлов
— подсчет ссылок на file objects
— правильно вызвать все IRP_MJ_XXX + FastIoXxx Pre & Post handlers.
При инициализации функдрайвера он регистрируется у первого драйвера и указывает на какие именно события он желает отвечать: например CreatePre & ClosePost (до вызова IoCallDriver в IRP_MJ_CREATE и после в IRP_MJ_CLOSE).
Соотв. задача написания нового фильтра сильно упрощается — можно сосредоточиться только на бизнес-логике и меньше отвлекаться на такие трудоемкие "мелочи" как конструирование имени файла в CreatePreHandler (до реального открытия файла фильтр УЖЕ вызывает обработчик функционального драйвера, если он есть, с ГОТОВЫМ именем файла)
соотв и не нужно каждый раз тратить время на bugfixing & QA фильтра — все это экономит на каждом новом фильтре "с нуля" около 6-9 мес труда разработчика (при использовании нашей среды с такой моделью)
кстати FDDK от OSR выполнено по схожему принципу — связка из нескольких драйверов...
но и написание такого универсального фильтра — задача далеко нетривиальная, на наш фильтр люди потратили 3 года еще до меня, а сейчас следующая версия выходит и продукту уже более 5 лет вложенных сюда точно получается
если нужна ссылка, то смотрите
The File System Filter Framework for Windows, это первая версия продукта (выпущен довольно давно но по работает без проблем и на XР и на 2003 — есть даже бинарная совместимость начиная с НТ4). Скоро начнется рекламная компания второй версии, в разработке которой я уже принимал участие
... << RSDN@Home 1.1 beta 2 >>