Я пишу FS драйвер для Win2000, он маунтит виртуальный диск. По сути задача состоит в том, чтоб написать read only FS. Ну вобщем с read то ничего и не получаеться. К данному моменту я отладил нормольную работу всех Query_... запросов. Но читать файлы получаеться только в lister. В WordPad, NotePad дело до read запроса не доходит, а все приходищие запросы от этих приложений я вроде бы нормально завершаю. Те запросы на открытие, нахождение и информацию о файле. Кроме того приходят запросы Query volume. Видно что-то в возвращаемой информации этим приложениям не нравиться: блокнот говорит, что ему не хватает памяти для продолжения выполнения операций. А word pad, что произошла неизвестная ошибка при доступе к файлу. Если есть идеи насчёт того, что я не так делаю поалуста отзавитесь.
Здравствуйте, <Аноним>, Вы писали:
А> Я пишу FS драйвер для Win2000, он маунтит виртуальный диск. По сути задача состоит в том, чтоб написать read only FS. Ну вобщем с read то ничего и не получаеться. К данному моменту я отладил нормольную работу всех Query_... запросов. Но читать файлы получаеться только в lister. В WordPad, NotePad дело до read запроса не доходит, а все приходищие запросы от этих приложений я вроде бы нормально завершаю. Те запросы на открытие, нахождение и информацию о файле. Кроме того приходят запросы Query volume. Видно что-то в возвращаемой информации этим приложениям не нравиться: блокнот говорит, что ему не хватает памяти для продолжения выполнения операций. А word pad, что произошла неизвестная ошибка при доступе к файлу. Если есть идеи насчёт того, что я не так делаю поалуста отзавитесь.
по указанной информации вряд ли Вам кто-то сможет сказать что-либо конкретное, если даже (мне) не совсем ясно, что именно у Вас:
— Вы пишите драйвер виртуального диска
— Вы пишите FSD
?
попробую угадать, Wordpad & notepad вероятно хотят от Вас поддержки memory-mapped files — что то еще сказать по Вашему вопросу сложно.
... << RSDN@Home 1.1.3 beta 1 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[2]: WordPad, NotePad - чего они хотят
От:
Аноним
Дата:
05.03.04 14:00
Оценка:
Здравствуйте, Valerio, Вы писали:
V>по указанной информации вряд ли Вам кто-то сможет сказать что-либо конкретное, если даже (мне) не совсем ясно, что именно у Вас: V>- Вы пишите драйвер виртуального диска V>- Вы пишите FSD V>?
V>попробую угадать, Wordpad & notepad вероятно хотят от Вас поддержки memory-mapped files — что то еще сказать по Вашему вопросу сложно.
Попробую конкретизировать. Я пишу драйвер файловой системы (read only FSD), которая моунтит только мой виртуальный диск, который сам не умеет ничего кроме как создаваться. Особенностью системы является то, что она предоставляет доступ к файлам, всю информацию о которых, получает из приложения, работающего в user mode. С этим связаны все особенности реализации FS. То есть я не поддерживаю многих возмоностей родных win2000 файловых систем. Например кэшируемых, peging файлов, и чтение реализовано в самом приметивном варианте. Однако я не видел запросов, где бы требовалось, то что у меня не реализовано. У меня сейчас нормально работает листинг каталогов, информация о файлах и диске, и чтение из Lister. Я сравнивал спомощью IRPTraser сравнивал обработку IRP моей FS (когда например запускаешь открытие файла в word) и CDFS. Картина похожая (т.е. порядок запросов, статусы), только в определённый момент после серии query запросов меня выкидывают. Подскажите пожалуста моет ли на основании query запросов система сделать вывод, что файл читать нельзя (буферы заполняются нормольно я проверял) и какие минимальные фичи должны быть полддерживаемы FS, чтобы с ней нормально работал word, word pad.
Кэш поддерживать не обязательно, однако страничный ввод-вывод обязателен для FSD и мое предположение верно — оба редактора интенсивно используют MMF, который целиком основан на paging IO и соотв Вам нужно его также поддерживать.
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Здравствуйте, Valerio, Вы писали:
V>Кэш поддерживать не обязательно, однако страничный ввод-вывод обязателен для FSD и мое предположение верно — оба редактора интенсивно используют MMF, который целиком основан на paging IO и соотв Вам нужно его также поддерживать.
Спасибо за помощ, вроде всё заработало (всмысле чтение в word, note pad, word pad). Пока удалось обойтись без поддержки страничного ввода вывода .
Здравствуйте, LehiZ, Вы писали:
LZ>А как получилось ?
Ну вобщем бага состояла в том, как вы правиьлно догадались, что я не инициализировал SectionObject в FILE_OBJECT. Правда я дощёл до этого чуть раньше, чем мне ответили (обратился к той же библии). А по поводу реализации, как я понял все вышеуказанные текстовые редакторы требуют поддержки MMF, и минимум что нужно сделать для этого — инициализировать правильно поля в FILE_OBJECT. Что касаеться самой реализации IRP_MJ_READ, то я просто игнорировал флаги IRP_PAGING_IO (этот флаг устанавливает NotePad) и IRP_NOCACHE, получал буфер, лочил его если надо и заполнял данными. Чтение работает нормально, но думаю для нормальной реализации IRP_MJ_WRITE, при работе с Note Pad, этого не будет достаточно (почитал на ссылках, которые мне подсказали). Елси в чём не прав поправьте, коль не сложно .
Кстати, если знаете подскажите пожалуста как заставить windows приложения не искать на замаунченном мной диске свои DLL, temp файлы и т.д. Просто из-за специфики файловой системы, мне для того чтобы узнать есть файл или нет нужно обращаться к порграмме, работающей в user mode, а она лезет в сеть.