Хочу сделать версионную файловую систему. Нашел много способов реализации таковой, как стандартными методами (жесткие ссылки и т.д.) так и нестандартные (подмена файлов с помощью драйвера-фильтра файловой системы и т.д.). Однако как я не мучался, в каждом из методов натыкался на огромные проблемы.
В результате пришел к выводу, что без собственно драйвера файловой системы написать даже нечто подобное невозможно.
Однако, как оказалось, написание драйверов различных устройств в литературе и в Интернете освещено достаточно хорошо, но про драйвер файловой системы как говориться "история умалчивает". Перерыл все и кроме пары "кривых" примеров ничего не нашел. А с литературой еще хуже. Нашел только одну книгу посвященную этому делу - "Windows NT File System Internals". Естественно на английском. Но это ладно. Она оказалась в pdf причем отсканеной. И отображается с глюками – так сказать "черезстрочно".
В общем если у кого-нибудь есть что-нибудь по разработке драйвера файловой системы, поделитесь, пожалуйста!
А если найдутся умные люди готовые поделиться со мной опытом в этом деле, то это будет вообще здорово!!!
stargaz0r.
Я не знал о теневых папках. В ближайшее время посмотрю, что это такое. Но остается один момент - эта возможность доступна только на 2003 Server. Но все равно большое спасибо.
Однако все-таки хочется найти людей которые что-то знают о создании такого типа драйверов под Windows.
Member
Статус: Не в сети Регистрация: 23.09.2003 Откуда: South Ural
newgeneral тема достаточно тонкая...
даже чтобы просто скомпилировать такой драйвер обычного DDK как-бы недостаточно, нужен MS IFS Kit - ищите его - там много документации...
вышеупомянутая книга есть, но тоже увы с дефектами...
читайте статьи с www.osronline.com - там кое-что есть и по данной теме
stargaz0r Можно обойтись и DDK, при условии, что есть файл ntifs.h из MS IFS Kit. И этот файл у меня есть.
Причем я уже к этому моменту имел небольшой опыт в написании драйверов. Конкретно писал драйвер-фильтра файловой системы. Мне тоже говорили, что нужен MS IFS Kit, но я обошелся файлом ntifs.h и исходниками filemon.
На сегодняшний день я уже написал простенькую основу драйвера файловой системы (пока даже не работает). В ней полностью отсутствует описание структуры данных самой ФС. Поэтому (наверно) драйверочик отказывается пока работать. Но об этом попозже.
1) У меня возник большой вопрос к тем людям, которые очень хорошо знают внутреннее устройство Windows (NT/2000/XP). Вопрос следующий. Есть диск. На нем том с "моей" файловой системой. Естественно Винды его не видят. Поэтому ему не назначена буква и т.д. (то есть он не смонтирован). Есть программа, которая посредством функции DefineDosDevice насильно монтирует любой том (дает букву и создает символическое имя). Вот этой программой я монтирую свой том. При попытке обратиться к этому тому Винда ругается, и говорит что, он не форматирован (естественно!!!). При просмотре свойств выясняется, что ему навешена файловая система RAW (что странно). Еще более странно, что при попытке повесить на "букву этого неизвестного тома" мой драйвер-фильтр (успешно вешаемый на все диски файловая система которых знакома Винде), происходит "невероятное" - Windows говорит что у этого диска отсутствует файловая система (неужели догадалась). В общем, ладно - это мелочи. Вопрос в следующем. Как файловая система связывается с диском. Вот например если я ставлю под Винду драйвер линуксовой системы EXt2 и монтирую вышеописанным образом том диска и этой ФС, то каким-то образом Винда сама связываем драйвер ФС и драйвер диска. Вот меня это и интересует. Очень интересует. Если у кого-нибудь, есть какие-нибудь соображения, поделитесь, пожалуйста.
stargaz0r Не обратил внимания. Спасибо за подсказку.
2) Проблема №2: Как выгрузить драйвер файловой системы???. Вот когда я делал драйвер фильтра, то задаешь ему функцию DriverUnload и все. Но здесь столкнулся с проблемой. Если в DriverEntry вызывать функция IoRegisterFileSystem, которая регистрирует вновь созданный DeviceObject в качестве драйвера файловой системы, то есть функция DriverUnload или нет - выгрузка не происходит. Даже вызов этой функции не происходит. Более того, все примеры драйверов файловых систем, которые я нарыл, имеют тот же самый недостаток. Драйвер выгружается только перезагрузкой. ЭТО ЖЕ УЖАС. Как мне его отлаживать. Сколько же раз мне в день придется комп перезагружать. Если кто знает причину такого поведения и особенно способ лечения этого - помогите.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения