RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : ... и всякое такое


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : LightElf
To : Slavik Gnatenko
Subj : ... и всякое такое

> > >Там другая кривость: сколько placeholders вобьёшь, столько по максимуму девайсов и будет.
> > Это не совсем так. Хидеры можно создавать динамически, но только до initcomplete. Потом кернель пробежит цепочку драйверов и все найденные имена забьет в файловую систему. И собственно после этого цепочка хидеров кернелом не используется, все DosOpen/Close/IOCtl функи разруливаются на уровне виртуальной файлухи. Вообще зря это уродство не оторвали.
> Верю. Может раньше иначе было? Потому что в старых дровах, что я видел, всё в статике было, только обрубали её на той записи, на которой железо кончалось.

Я не смотрел древние кернелы, в мерлине так сделано. В структуре заголовка есть полудокументированные поля ProtDS, ProtCS и т.д. Которые в половине описаний отмечены как reserved. Вот оттуда собственно кернел и берет значения для DS и CS при обращении к драйверу. Ничего не мешает выделить память девхелпом и структуру заполнить соответственно, установив эти поля на сегменты драйвера.
Почему в дровах делают в статике - видимо легче заложить 16 плейсхолдеров, чем создавать в динамике. А может есть какие-то заморочки, которые я не углядел.

Wed 30 Jul 2008 15:48 Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.8.0.1)




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.