![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Hagrael |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 26.6.2011 Репутация: нет Всего: нет |
Здравствуйте, уважаемые форумчане. Мне не очень понятно, что из себя представляют драйверы и контексты. Как я понял:
Драйвер - программа, обеспечивающая работоспособность устройства. Умеет подавать нужные сигналы устройству, которые Windows не знает. Контекст устройства - программа, работающая с драйвером... А она-то зачем? Посылает драйверу нужные сигналы? ![]() Схема действия, как я понимаю, такая: Программа => Windows => Контекст => Драйвер => Устройство И Windows в этой схеме предоставляет библиотеку GDI. Что она делает, тоже не до конца понятно. Заранее благодарен за объяснения. Это сообщение отредактировал(а) Hagrael - 4.8.2011, 08:09 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Драйвер - это прослойка между устройством и операционной системой. Что такое контекст я не знаю (подозреваю это что-то Windows-специфичное). Скорее всего, это просто идентификатор, который позволяет однозначно определить устройство (в *nix - это файл, или дескриптор файла, если он открыт).
Когда тебе необходимо общаться с устройством, ты запрашиваешь его контекст у операционной системы. Если устройство свободно, то ОС его тебе выделяет. Есть определенный набор операций, доступный данному устройству (обычно, он стандартен для каждого типа устройств). Когда ты применяешь какую-либо операцию к контексту, то система перенаправляет запрос драйверу, а тот уже транслирует эту операцию в команды отправляемые устройству. Соответственно, результат выполнения команд обратно преобразуется в стандартную для операции форму и возвращается ОС, которая уже передает ее твоей программе. |
|||
|
||||
Hagrael |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 26.6.2011 Репутация: нет Всего: нет |
Т. е. в схеме, приведенной выше, пункты Windows и Контекст можно объединить?
P.S.: Ну и названия придумывают... |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
||||
|
||||
shara |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 29.6.2004 Где: печенье? Репутация: 2 Всего: 2 |
Во первых драйвер это НЕ программа в привычном для нас смысле. Это скорее набор функций, которые подсовываются ОС, и которые она использует для выполнения неких действий. Посему драйвер лучше сравнивать с ДИНМИЧЕСКОЙ библиотекой функций.
Рискну предположить что вышеупомянутый "контекст устройства" это собсно программа которая его (драйвер) использует\обращается. К примеру, при попытке некой программы прочесть некий файл, функции драйвера жесткого диска реализующие чтение будут вызваны непосредственно в адресном пространстве этой программы. читай драйверу будет видно всю память программы которая к нему обращается -------------------- с точки зрения аэродинамики шмель не может летать |
|||
|
||||
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
Можно ещё предположить, что контекст устройства - это структура с данными о конкретном устройстве (шина, номер слота и т.п.). Дело в том, что для всех устройств одного типа создаётся один драйвер, в который приподключении устройства ОС передаёт этот самый контекст.
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
Hagrael |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 26.6.2011 Репутация: нет Всего: нет |
Драйвер - набор функций, посылающих нужные сигналы устройству
Контекст устройства - структура данных, содержащая информацию об устройстве. Используется для взаимодействия с драйвером (но почему нельзя напрямую использовать функции драйвера?) GDI - библиотека, дающая программе контекст видеокарты? Не мог бы кто-нибудь из участников форума сделать схему взаимодействия программы и видеокарты? |
|||
|
||||
borisbn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
![]()
![]() Ф-ции драйвера (в Windows) работают на уровне ядра. Напрямую вызывать ф-ции, работающие на уровне ядра можно только из ядра. Из пользовательского режима они "не видны". Для того, чтобы их всё-таки вызвать, существует API-функция DeviceIoControl. Вот почитай http://ru.wikipedia.org/wiki/Кольца_защиты Вообще, схема общения программы с устройством практически всегда такая:
не зная кода команды, сколько и каких данных эта команда требует и т.п., обращаться к драйверу нельзя, поэтому часто делают "прослойку" (набор библиотек/ф-ций) между драйвером и пользовательскими программами. GDI - как раз такая "прослойка" Добавлено @ 11:06 Предположим, что драйвер видеокарты создаёт symlink "video" и умеет выполнять одну команду "нарисовать точку". Входные параметры команды: x, y, color. Выходных нет. В GDI есть ф-ции "установить цвет", "переместить указатель рисования" и "нарисовать линию от указателя до точки (x,y)" (псевдо(очень псевдо)код):
Это сообщение отредактировал(а) borisbn - 9.8.2011, 11:11 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||
|
|||||||
Hagrael |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 26.6.2011 Репутация: нет Всего: нет |
А откуда GDI узнает о том, какая команда у драйвера что требует? Ведь драйвера же разные бывают... Ведь разные? ![]() |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
Для этого Microsoft пишет спецификацию (список команд и параметров), а изготовитель драйвера должен её поддержать. После написания драйвера его отправляют в Microsoft для получения сертификата (подписи). Если драйвер сделан не по спецификации, или вылетает в каких-либо ситуациях (для проверки работы драйвера используют специальные стресс-тесты), то мелкомягкие просто не выдают сертификат. для однотипных устройств драйвера "выглядят" для ОС (вернее для GDI) одинакого. Отличаются они внутренней начинкой. Плюс к тому, наверняка у Microsoft имеется договорённость с nVidia, ATI, Intel, etc. о том, что если они хотят расширить список команд и/или параметров, то они сообщают об этом в Microsoft, а те в очередной версии учитывают эти расширения. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
Hagrael |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 26.6.2011 Репутация: нет Всего: нет |
borisbn, понятно! А GDI предоставляет ну совсем уж верхоуровневый API, я правильно понял? И, получается, для каждой ОС свои драйвера?
Т. е. на старых версиях GDI эти новые драйвера будут: а) пахать не в полную мощь б) вообще не будут пахать P.S.: Тут, как я понял, идет речь о драйверах, выпускаемых nVidia, ATI и Intel, а не самих устройствах. Я правильно понял? |
|||
|
||||
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
![]() а ты когда-нить слышал о кроссплатформенных драйверах ? Я - нет. не уверен, т.к. всю поднаготную драйверов/ОС/GDI не знаю, но думаю, что да, все ф-ции новых драйверов работать не будут на старом ГДИ
а вот это я не понял. чойта ? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
alexvs11 |
|
|||
hell is here ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: 2 Всего: 10 |
||||
|
||||
Hagrael |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 26.6.2011 Репутация: нет Всего: нет |
Я имел в виду, что компании Microsoft не интересны нововведения в "API видеокарты" (если так можно назвать самые низкоуровневые команды, посылаемые непосредственно видеокарте от драйвера), что компанию Microsoft интересуют исключительно нововведения в драйверах данных фирм, т. к. GDI будет работать именно с ними. GDI ведь не будет абсолютно никак взаимодействовать напрямую с видеокартой? И, выходит, что у API видеокарты нет никаких стандартов и спецификации, правильно? А с появлением новых версий GDI контекст устройства ведь тоже может принять новые возможности, ведь так? |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
Не совсем. Минимальное API как-то стандартизировано. Когда ты только ставишь винду или заходишь в Windows в безопасном режиме включается "универсальный" драйвер от самих мелкомягких. Он знает о видеокарте только то, что она умеет отображать пикселы в нужном месте и нужным цветом. Никаких 3D-акселераций не используется. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |