RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Ответить на сообщение
Имя:
e-mail:
FIDO:
Home page:
сохранить данные о вас
Тема:
> >>>>>> вот про тайный смысл поля "link to next header" кто-нибудь может рассказать ? > >>>>>> в смысле - возможность засунуть несколько драйверов в один файл, она зачем ? > >>>>>Поддерживать несколько девайсов одним экземпляром драйвера > >>>>одним файлом > >>>Одним файлом по любому несколько девайсов поддерживается. > >>>Если он, конечно, хоть сколь-нибудь универсален или девайсы идентичные. > >>>Фишка хедера в том, чтобы грузить один экземпляр. > >>в мануалах ясно написано - "несколько драйверов в один файл". > >>неужели врут ? :-/ > >Врут :) Драйвер и файл тождественны. > ----- > MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА > ... > Драйвер устройства в MS-DOS - это подпрограмма, которая вызы- > вается MS-DOS, с одной стороны, и взаимодействует с конкретным > устройством, с другой. > ... > При загрузке нового драйвера его адрес помещается в поле > связи предыдущего драйвера. Исключением являются файлы, содержа- > щие несколько драйверов одновременно. В этом случае первые два > байта поля связи должны содержать смещение заголовка следующего > драйвера. > ... > Следующие два слова заголовка драйвера содержат смещения прог- > рамм СТРАТЕГИЙ и ПРЕРЫВАНИЙ, соответственно. MS-DOS использует > эту информацию совместно с сегментным адресом драйвера для опре- > деления точек входа в указанные программы. Сегментный адрес драй- > вера система, конечно же, узнает при его загрузке. > ----- > > >>сами драйвера сложнее > >Конкретнее, пожалуйста. > это поле - одна из составляющих итоговых дебрей > > >Никто не мешает ограничить себя одним устройством на файл. > >Но лично мне com2com.sys в виде двух файлов добавил бы только > >существенного IDC траха при написании. > если оторваться от "legacy", то можно теоретически представить, > что могут быть драйвера и без лишних сложностей. > > >>>Разработчику драйвера не надо озадачиваться, как определять, > >>а он и так не озадачивался. > >>было принято решение, что в писюке может быть максимум 4 ком-порта, > >Вот именно потому и не озадачивался, что использовал "кривую", по твоему мнению, фичу. > >Иначе бы пришлось. Зуб даю, эта задача на пару порядков сложнее, > >чем описать внутреннее взаимодействие с несколькими точками входа. > > >>>Пользователю, как он сейчас огребает на USB контроллерах, > >>если он не хочет думать, то он может сделать a-la com.sys : > >>прописать их _больше_. > >Это чтобы при включённом PAUSEONERROR машина даже загрузиться не смогла? > это проблема _уже_решена_ в некоторых дровах ключом в параметрах. > а USB????.SYS только что проверил удвоением в конфиге. > так этим вообще фиолетово, что с /q, что без него - тишина... > давай зуб :) > > >Отличный подход. > именно. в обоих смыслах. > > >>>>>и менее ресурсоёмко, чем грузить по экземпляру на каждый девайс. > >>>>оно всё равно грузится по экземпляру на девайс > >>>Ну ну. У тебя компорта ещё два? Покажи мне два загруженых экземпляра com.sys. > >>"унутре у него" несколько драйверов. каким не хватило железа - не грузятся. > >Унутре у него один драйвер. С несколькими точками входа. > >И ресурсы расходуются в основном на открытое логическое устройство, а не на железное. > куда они расходуются - дело десятое, но унутре именно что несколько драйверов. > засунутых туда особым образом, но после загрузки, > грузили ли их из "многодрайверного" файла, или же из "однодрайверного", > для операционки результат будет одинаковый - по драйверу на девайс : com1$,com2$,... > это ведь не dll ? > и ещё табличка из масадоса > --- > Колонка Attrib содержит слова атрибутов драйверов, колонка > Address содержит начальный адрес каждого драйвера (взятый из поля > связи предыдущего в списке драйвера) и колонки STRAT и INTRP со- > держат смещения программ СТРАТЕГИЙ и ПРЕРЫВАНИЙ от начала драйве- > ра. > -------------------------------------------------------------------- > SD-ShowDriv, Version 1.00, Copyright 1988 Kevin Jaeger > Device Type Units Attrib Address STRAT INTRP > ------------------------------------------------------------------- > COM1 Char 01 8000 0070:0203 00A7 00B8 > COM2 Char 01 8000 0070:0B37 00A7 00BE > --- > > >"в смысле - возможность засунуть несколько драйверов в один файл, она зачем ?" > >Итак делаем нормальное API, убираем статическое описание точки входа через заголовок > >и заменяем на динамическую регистрацию на ините > >(а если помечтать, так вообще в произвольный момент). > >Кривость с ограничением количества железа уходит. > если не обеспечить лёгкость написания драйверов > то любой функциональности - грош цена > потому как не будет самих драйверов > > >Тем не менее, исходная "кривость", т.е. возможность иметь несколько точек входа, > >вполне сохраняется. > типун тебе на язык ! :) >
_, _, _, _, _ _, _,_
(_ | / \ |\ | / \ |_/
, ) | , \ / | \| \ / | \
~ ~~~ ~ ~ ~ ~ ~ ~
Programmed by
Dmitri Maximovich
,
Dmitry I. Platonoff
,
Eugen Kuleshov
.
25.09.99 (c) 1999,
RU/2
. All rights reserved.
Rewritten by
Dmitry Ban
. All rights ignored.