Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Виртуальный диск Dos: вопрос ре-ентерабельности

2.4K
04 ноября 2005 года
Николай Коровин
58 / / 13.03.2004
В первый раз в жизни пишу настоящий DOS/Win9x драйвер -- не резидент, а именно блочный драйвер. Виртуальный диск -- имиджфайл, "рассыпающийся" на секторы при обращении.
Можно ли из-под функций чтения-записи своего драйвера обращаться к имиджу стандартными средствами DOS? Если они не ре-ентерабельны, то как мне обмануть судьбу и читать имидж из-под драйвера?

ЗЫ: фулпруф не нужен, если кто-то пропишет имидж на самом виртуальном диске -- шорт с ним, пускай виснет %)
398
04 ноября 2005 года
Alexandoros
630 / / 21.10.2005
Обмануть - легко - прицепи в цепочку обработчиков 21h - свое прерывания самым первым. Дальше детекть ax на ф-ции работы с файлами (какие они там, забыл 3ah - 3fh??, короче есть их там пару штук) и соответсвенно проверяй bx на дескриптор обращенный к твоему диску. А потом вызывай либо свой обработчик, либо стандартный.

ПС а разве в вин9х такие же дрова как и в досе?
ППС дос НЕРЕЕНТЕРАБЕЛЬНЫЙ (дурацкое слово придумали буржуи)
2.4K
04 ноября 2005 года
Николай Коровин
58 / / 13.03.2004
>> вызывай либо свой обработчик, либо стандартный.

Да нет у меня своего обработчика :)))
Я ж не обработчик некоторых-двадцать-первых-служб пишу, а драйвер блочный, формата SYS, самой системой грузимый, который только read sectors да write sectors, а вот ему самому, драйверу этому, эти досовские службы в стандартном виде понадобились :(
Кстати, как будет выглядеть ППС в свете этого замечания? Что-то мне подсказывает, что так же, хотя научно доказано, что функция инициализации драйвера 21-е может юзать в хвост и в гриву, вот с фн. прерывания непонятки...

>> ПС а разве в вин9х такие же дрова как и в досе?

Я имею в виду не те дрова, которые ставятся на 32-битное расширение с апями, гуем и глюками, а "наследственные", которые ставятся на их 16-битные ёдра и потом "под шумок" работают и в защищенке, иногда при загрузке вызывая надпись типа "Диск Жо сидит на 16-битном драйвере, тормозить будет".

>> дурацкое слово придумали буржуи

Не перевменяемый :)))
398
05 ноября 2005 года
Alexandoros
630 / / 21.10.2005
Цитата:
Originally posted by Николай Коровин
>>
Да нет у меня своего обработчика :)))
Я ж не обработчик некоторых-двадцать-первых-служб пишу, а драйвер блочный, формата SYS, самой системой грузимый, который только read sectors да write sectors, а вот ему самому, драйверу этому, эти досовские службы в стандартном виде понадобились :(



Ууууу дорогой, так не пойдет. Придется все через порты делать :) Там, по идее нет ниче сложного, если тебе нада тока рид сектор и врайт сектор. Дос тут тебе точно не поможет. Маякни мне на [email]Alexandoros@gmail.com[/email], я домой приду вышлю тебе исходник работы с диском через порты.

2.4K
05 ноября 2005 года
Николай Коровин
58 / / 13.03.2004
Не, мизандерстуд вышел. Вот диспозиция:
а) Имеется имидж диска. Формат не имеет значения, это мой геморрой, пусть условно будет .IMZ.
б) Этот имидж лежит черт-те где, может быть, на харде, а может -- на бутовом сетевом ресурсе.
в) Мой драйвер должен выполнять простейшую работу ДОСовского драйвера -- обрабатывать RS да WS, да немного третьестепенок типа "дискету не вытаскивали".
г) Драйвер получает запрос, допустим, на RS (что попроще). Он лезет на имидж (который, повторяюсь, лежит черт-те-где черт-те-как) и вычитывает заданный кусок имиджфайла с заданными секторами (ну, или там разархивирует влет, если я это дело до состояния ДаблСпейса доведу, не суть).
Вааапрос: как он лезет на имиджфайл? Посекторно, сам расплетая FAT? А если туда посекторно вообще никак, скажем, диск сетевой (сетевой драйвер загрузился до моего и имиджфайл уже доступен)?
398
07 ноября 2005 года
Alexandoros
630 / / 21.10.2005
Ну так тебе ведь полюбом нада вклинить (драйвер) между стандартными обработчиками, и если имидж - сетевой, то писать в драйвере блок работы с сетью. А вообще б лучше б перехватывать обращения к портам - вдруг ктото будет работать с ДОС-Навигатором в режиме прямого доступа к диску? Тогда драйвер не поможет.
2.4K
07 ноября 2005 года
Николай Коровин
58 / / 13.03.2004
Поскольку рассмотреть в одном драйвере все возможные нынешние и будущие ситуации невозможно по определению, остается признать, что он должен обращаться к имиджфайлу через 02 и 03 функции 13-й службы BIOS (RS/WS), FAT распутывать сам (поскольку DOS ему в распутывании FAT никак не поможет... или все-таки можно через ж. заставить?), а все устройства, эмулируемые на уровне файловой системы, а не отдельных секторов, хостить имидж не смогут. Как и все устройства, содержащие неизвестную мне и миру сейчас FAT (допустим, какой-нибудь будущий рейзер, с которым сама DOS работает через какой-нибудь РейзерФС Фор ДОС, написанный каким-нибудь энтузиастом).
398
07 ноября 2005 года
Alexandoros
630 / / 21.10.2005
Цитата:
Originally posted by Николай Коровин
(поскольку DOS ему в распутывании FAT никак не поможет... или все-таки можно через ж. заставить?)



Если принять то что все проги будут работать через 21-е то наверное возможно. Цепляешся к 21-му, смотриш хендл запрошеного файла - если твой, кидаеш на свой драйвер. Теперь драйвер сможет работать с 21м досовским, поскольку вход в него не был выполнен ( произошла перекидка), нереентерабельности нету.


Цитата:

, а все устройства, эмулируемые на уровне файловой системы, а не отдельных секторов, хостить имидж не смогут.


этого я не понял.

Возможно еще раз - на каком уровне должен работать драйвер - между чем и чем?

2.4K
07 ноября 2005 года
Николай Коровин
58 / / 13.03.2004
>Если принять то что все проги будут работать через 21-е

Коли б так было, я б не блочный драйвер писать стал, а простой резидент.

>на каком уровне должен работать драйвер

По вопросу вижу, что первый, с самим вопросом, пост прочитан наискосок :) Это не резидент, который что-то где-то перехватывает и подменяет что-то чем-то, это гордый .SYS, который никакие инты на себя не перевешивает, не TSR'ится и вообще только предъявляет DOS'у свои таблицы и размеры, а ДОС уже сам должен и сунуть его, куда надо, и позвать, когда надо, короче, не мне вам рассказывать, что такое блочный драйвер. Ну, и работать он, опять же не мне вам рассказывать, может только на одном уровне, на том, на котором все блочные драйверы работают %)
...и в свете этого вопрос ре-ентерабельности остается открытым, поскольку, как вижу, доселе мы обсуждали несколько другую архитектуру %)
325
09 ноября 2005 года
Franky
723 / / 10.08.2005
Мож я туплю, но разве не о функции ramdrive.sys идет речь? :) Оч. удобная под ДОСом для свопов...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог