Драйвер FS как логический диск. Проблема с Cache Manager'ом
От: xBlackCat Россия  
Дата: 26.03.04 15:03
Оценка:
Здравствуйте.

Лирическое вступление:
Я монтирую файловую систему, как букву диска (Просто указывая SymbolicLink, как '\DosDevices\X:'). FS получает данные из сервиса (списки файлов и их содержимое). Для начала я писал FS без поддержки Cache и Memory менеджеров (FileObject->FsContext = NULL), отладил работу — всё работает, как часы(кроме, естественно, блокнота и MemoryMapped Files). Проблемы начались после того, как я начал писать поддержку Cache и Memory менеджеров. Всё, как написано в "библии".

Что получается:
1 при открытии файла блокнотом, выдаётся сообщение, что "Файл слишком велик"
2 при чтении Far'ом вызывается кэшируемое чтение, т.к. данных ещё в кэше нет, то вызывается обычное чтение. После завершения этих вызовов (буфер заполняется правильно — в SoftIce смотрел), вылезает exception Page Fault (только если SoftIce запущен, инече всё проходит тихо). После чего FAR виснет намертво. Следующих вызовов функций нет.

Пытался вручную забивать значения для структур VCB и VPB (они у меня статические: одна буква диска, значит одна структура каждого типа) и подставлять ссылки на них в нужных местах — ничего не меняется.

структура FCB состоит из NtRequiredFCB + SectionObjectPointers + остальное (именно в такой последовательности).

Буду оччень раз услышать советы, как обмануть систему и заставить работать нормально Cache и Memory managers.
Rojac — Rsdn Offline JAva Client
Анонсы и обсуждение здесь
Автор: xBlackCat
Дата: 08.02.10
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.