Сообщение Перенаправление чтения из файла (Reparse Points?) от 21.02.2016 19:32
Изменено 21.02.2016 19:44 Albeoris
Доброго времени суток.
Некоторое время занимаюсь разбором игровых форматов. Одна из основных проблем заключается в тестировании и последующей эксплуатации инструментария, когда требуется вначале достать файл из архива (обычно, двойного уровня вложенности со сжатием и шифрованием), а затем упихать обратно после внесения изменений.
С недавних пор стал поглядывать в сторону dokany.
Уже написал обвязку для маунта архива на файловую систему и чтения из него. Но потребуется написать и отладить ещё много кода для поддержки многопоточной записи, дефрагментации и т.д.
И тут подумалось — а за каким лешим я реализую собственную файловую систему с поддержкой записи, когда мне нужно просто распаковать архив в папочку и перенаправить все обращения к оригинальному файлу на эти самые распакованные?
И вот встал вопрос — какими инструментами это можно сделать? На ум приходят в первую очередь Reparse Points с самописным драйвером.
Но есть минусы:
1) Это сложно.
2) Я этого никогда не делал.
В связи с чем вопросы:
1) Есть ли альтернативы?
2) Есть ли возможность описать всё средствами .NET (всевозможные фреймворки и сторонние драйверы с любой лицензией, подобные dokany, привествтуются).
3) Если всё-таки придётся идти сложным путём, может быть кто-нибудь поделится примером кода, который делает описанное выше? Например, первые пять байт из файла D:\archive.bin считываются из файла D:\archive\1.bin, а всё остальное из D:\archive\2.bin ?
Спасибо за любую помощь!
P.S. Платформа: Windows
Некоторое время занимаюсь разбором игровых форматов. Одна из основных проблем заключается в тестировании и последующей эксплуатации инструментария, когда требуется вначале достать файл из архива (обычно, двойного уровня вложенности со сжатием и шифрованием), а затем упихать обратно после внесения изменений.
С недавних пор стал поглядывать в сторону dokany.
Уже написал обвязку для маунта архива на файловую систему и чтения из него. Но потребуется написать и отладить ещё много кода для поддержки многопоточной записи, дефрагментации и т.д.
И тут подумалось — а за каким лешим я реализую собственную файловую систему с поддержкой записи, когда мне нужно просто распаковать архив в папочку и перенаправить все обращения к оригинальному файлу на эти самые распакованные?
И вот встал вопрос — какими инструментами это можно сделать? На ум приходят в первую очередь Reparse Points с самописным драйвером.
Но есть минусы:
1) Это сложно.
2) Я этого никогда не делал.
В связи с чем вопросы:
1) Есть ли альтернативы?
2) Есть ли возможность описать всё средствами .NET (всевозможные фреймворки и сторонние драйверы с любой лицензией, подобные dokany, привествтуются).
3) Если всё-таки придётся идти сложным путём, может быть кто-нибудь поделится примером кода, который делает описанное выше? Например, первые пять байт из файла D:\archive.bin считываются из файла D:\archive\1.bin, а всё остальное из D:\archive\2.bin ?
Спасибо за любую помощь!
P.S. Платформа: Windows
Перенаправление чтения из файла (Reparse Points?)
Доброго времени суток.
Некоторое время занимаюсь разбором игровых форматов. Одна из основных проблем заключается в тестировании и последующей эксплуатации инструментария, когда требуется вначале достать файл из архива (обычно, двойного уровня вложенности со сжатием и шифрованием), а затем упихать обратно после внесения изменений.
С недавних пор стал поглядывать в сторону 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
Поддержка многопоточного случайного доступа
Спасибо за любую помощь!
Некоторое время занимаюсь разбором игровых форматов. Одна из основных проблем заключается в тестировании и последующей эксплуатации инструментария, когда требуется вначале достать файл из архива (обычно, двойного уровня вложенности со сжатием и шифрованием), а затем упихать обратно после внесения изменений.
С недавних пор стал поглядывать в сторону 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
Поддержка многопоточного случайного доступа
Спасибо за любую помощь!