Виртуальный диск Dos: вопрос ре-ентерабельности
Можно ли из-под функций чтения-записи своего драйвера обращаться к имиджу стандартными средствами DOS? Если они не ре-ентерабельны, то как мне обмануть судьбу и читать имидж из-под драйвера?
ЗЫ: фулпруф не нужен, если кто-то пропишет имидж на самом виртуальном диске -- шорт с ним, пускай виснет %)
ПС а разве в вин9х такие же дрова как и в досе?
ППС дос НЕРЕЕНТЕРАБЕЛЬНЫЙ (дурацкое слово придумали буржуи)
Да нет у меня своего обработчика :)))
Я ж не обработчик некоторых-двадцать-первых-служб пишу, а драйвер блочный, формата SYS, самой системой грузимый, который только read sectors да write sectors, а вот ему самому, драйверу этому, эти досовские службы в стандартном виде понадобились :(
Кстати, как будет выглядеть ППС в свете этого замечания? Что-то мне подсказывает, что так же, хотя научно доказано, что функция инициализации драйвера 21-е может юзать в хвост и в гриву, вот с фн. прерывания непонятки...
>> ПС а разве в вин9х такие же дрова как и в досе?
Я имею в виду не те дрова, которые ставятся на 32-битное расширение с апями, гуем и глюками, а "наследственные", которые ставятся на их 16-битные ёдра и потом "под шумок" работают и в защищенке, иногда при загрузке вызывая надпись типа "Диск Жо сидит на 16-битном драйвере, тормозить будет".
>> дурацкое слово придумали буржуи
Не перевменяемый :)))
Цитата:
Originally posted by Николай Коровин
>>
Да нет у меня своего обработчика :)))
Я ж не обработчик некоторых-двадцать-первых-служб пишу, а драйвер блочный, формата SYS, самой системой грузимый, который только read sectors да write sectors, а вот ему самому, драйверу этому, эти досовские службы в стандартном виде понадобились :(
>>
Да нет у меня своего обработчика :)))
Я ж не обработчик некоторых-двадцать-первых-служб пишу, а драйвер блочный, формата SYS, самой системой грузимый, который только read sectors да write sectors, а вот ему самому, драйверу этому, эти досовские службы в стандартном виде понадобились :(
Ууууу дорогой, так не пойдет. Придется все через порты делать :) Там, по идее нет ниче сложного, если тебе нада тока рид сектор и врайт сектор. Дос тут тебе точно не поможет. Маякни мне на [email]Alexandoros@gmail.com[/email], я домой приду вышлю тебе исходник работы с диском через порты.
а) Имеется имидж диска. Формат не имеет значения, это мой геморрой, пусть условно будет .IMZ.
б) Этот имидж лежит черт-те где, может быть, на харде, а может -- на бутовом сетевом ресурсе.
в) Мой драйвер должен выполнять простейшую работу ДОСовского драйвера -- обрабатывать RS да WS, да немного третьестепенок типа "дискету не вытаскивали".
г) Драйвер получает запрос, допустим, на RS (что попроще). Он лезет на имидж (который, повторяюсь, лежит черт-те-где черт-те-как) и вычитывает заданный кусок имиджфайла с заданными секторами (ну, или там разархивирует влет, если я это дело до состояния ДаблСпейса доведу, не суть).
Вааапрос: как он лезет на имиджфайл? Посекторно, сам расплетая FAT? А если туда посекторно вообще никак, скажем, диск сетевой (сетевой драйвер загрузился до моего и имиджфайл уже доступен)?
Ну так тебе ведь полюбом нада вклинить (драйвер) между стандартными обработчиками, и если имидж - сетевой, то писать в драйвере блок работы с сетью. А вообще б лучше б перехватывать обращения к портам - вдруг ктото будет работать с ДОС-Навигатором в режиме прямого доступа к диску? Тогда драйвер не поможет.
Поскольку рассмотреть в одном драйвере все возможные нынешние и будущие ситуации невозможно по определению, остается признать, что он должен обращаться к имиджфайлу через 02 и 03 функции 13-й службы BIOS (RS/WS), FAT распутывать сам (поскольку DOS ему в распутывании FAT никак не поможет... или все-таки можно через ж. заставить?), а все устройства, эмулируемые на уровне файловой системы, а не отдельных секторов, хостить имидж не смогут. Как и все устройства, содержащие неизвестную мне и миру сейчас FAT (допустим, какой-нибудь будущий рейзер, с которым сама DOS работает через какой-нибудь РейзерФС Фор ДОС, написанный каким-нибудь энтузиастом).
Цитата:
Originally posted by Николай Коровин
(поскольку DOS ему в распутывании FAT никак не поможет... или все-таки можно через ж. заставить?)
(поскольку DOS ему в распутывании FAT никак не поможет... или все-таки можно через ж. заставить?)
Если принять то что все проги будут работать через 21-е то наверное возможно. Цепляешся к 21-му, смотриш хендл запрошеного файла - если твой, кидаеш на свой драйвер. Теперь драйвер сможет работать с 21м досовским, поскольку вход в него не был выполнен ( произошла перекидка), нереентерабельности нету.
Цитата:
, а все устройства, эмулируемые на уровне файловой системы, а не отдельных секторов, хостить имидж не смогут.
этого я не понял.
Возможно еще раз - на каком уровне должен работать драйвер - между чем и чем?
Коли б так было, я б не блочный драйвер писать стал, а простой резидент.
>на каком уровне должен работать драйвер
По вопросу вижу, что первый, с самим вопросом, пост прочитан наискосок :) Это не резидент, который что-то где-то перехватывает и подменяет что-то чем-то, это гордый .SYS, который никакие инты на себя не перевешивает, не TSR'ится и вообще только предъявляет DOS'у свои таблицы и размеры, а ДОС уже сам должен и сунуть его, куда надо, и позвать, когда надо, короче, не мне вам рассказывать, что такое блочный драйвер. Ну, и работать он, опять же не мне вам рассказывать, может только на одном уровне, на том, на котором все блочные драйверы работают %)
...и в свете этого вопрос ре-ентерабельности остается открытым, поскольку, как вижу, доселе мы обсуждали несколько другую архитектуру %)
Мож я туплю, но разве не о функции ramdrive.sys идет речь? :) Оч. удобная под ДОСом для свопов...