Перенаправление чтения из файла (Reparse Points?)
От: Albeoris  
Дата: 21.02.16 19:32
Оценка: 24 (2)
Доброго времени суток.

Некоторое время занимаюсь разбором игровых форматов. Одна из основных проблем заключается в тестировании и последующей эксплуатации инструментария, когда требуется вначале достать файл из архива (обычно, двойного уровня вложенности со сжатием и шифрованием), а затем упихать обратно после внесения изменений.

С недавних пор стал поглядывать в сторону dokany.
Уже написал обвязку для маунта архива на файловую систему и чтения из него. Но потребуется написать и отладить ещё много кода для поддержки многопоточной записи, дефрагментации и т.д.

И тут подумалось — а за каким лешим я реализую собственную файловую систему с поддержкой записи, когда мне нужно просто распаковать архив в папочку и перенаправить все обращения к оригинальному файлу на эти самые распакованные?

И вот встал вопрос — какими инструментами это можно сделать? На ум приходят в первую очередь Reparse Points с самописным драйвером.
Но есть минусы:
1) Это сложно.
2) Я этого никогда не делал.

В связи с чем вопросы:
1) Есть ли альтернативы?
2) Есть ли возможность описать всё средствами .NET (всевозможные фреймворки и сторонние драйверы с любой лицензией, подобные dokany, привествтуются).
3) Если всё-таки придётся идти сложным путём, может быть кто-нибудь поделится примером кода, который делает описанное выше? Например, первые пять байт из файла D:\archive.bin считываются из файла D:\archive\1.bin, а всё остальное из D:\archive\2.bin ?

Ограничения:
Платформа — Windows
Совместимость с Memory Mapped File
Поддержка многопоточного случайного доступа

Спасибо за любую помощь!
"Хаос всегда побеждает порядок, поскольку лучше организован." (с) Терри Пратчетт
Отредактировано 21.02.2016 19:44 Albeoris . Предыдущая версия .
.net file system reparse points ntfs windows
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.