Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Определение устройства с которым работает драйвер  (Прочитано 18605 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Lemberg
Участник

de
Offline Offline

« : 13-01-2004 09:54 » 

Wes'ma navernoe glupij wopros, no poskol'ku nikto mne na nego wrazumitel'nogo otweta dat' ne moget (da i w knigah ja ne nashel), reshil sprosit'.
Po idee driver uznaet o tom s kakim ustrojstwom emu pridetsa imet' delo w DriverEntry ili w AddDevice. No ja ne nachogu nigde imenno etogo objawlenija. Kak ja ponimaju, eto dolgno bit' sdelano w funktije IoCreateDevice, odnako gde imenno???
Podskagite, please, kak ono dolgno wigl'adet'.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #1 : 13-01-2004 11:52 » 

В DeviceObject есть указатель DeviceExtension- туда ты можешь поместить указатель на любую структуру, где можешь хранить всю инфу о девайсе и любую другую необходимую инфу, буфер для структуры выдели в пуле(а не в стеке!). Указатель на DeviceObject передается тебе при вызове всех ф-ций обработчиков запросов IRP_MJ_... как первый параметр, далее достаточно просто посмотреть на DeviceExtension и узнать что за девайс в каком состоянии и т.д. .  Вот так все просто.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #2 : 13-01-2004 12:12 » 

В AddDevice передается указатель на PDO, созданный драйвером шины(или перечислителя, энумератора), засылая на него запросы ты можешь узнать все об устройстве(имя, PID и т.д), ресурсы, выделенные твоему устройству сообщать в IRP_MN_START_DEVICE. Всю эту инфу ты опять же можешь сохранить в структуре, на которую указывает DeviceExtension.
Записан
Lemberg
Участник

de
Offline Offline

« Ответ #3 : 13-01-2004 13:11 » 

Ja imel wwidu nemnogo drugoe. Naprimer ja pishu driver dl'a USB. Otkuda driver znaet, chto on USB-driver? On ge dolgen znat' kakogo on tipa ili net?
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #4 : 13-01-2004 13:30 » 

Цитата

Ja imel wwidu nemnogo drugoe. Naprimer ja pishu driver dl'a USB. Otkuda driver znaet, chto on USB-driver? On ge dolgen znat' kakogo on tipa ili net?


Странный вопрос, понятно что на него нигде нет ответа. А ты как думаешь? Естественно знает. Тогда в чем же у тебя вопрос-то?
Записан
Anonymous
Гость
« Ответ #5 : 13-01-2004 13:59 » 

Цитата

Естественно знает. Тогда в чем же у тебя вопрос-то?

Otkuda on eto znaet??? Ага
Ja ne ponimaju otkuda konkretnij driver do peredachi emu DeviceObject znaet kto on. Esli ge emu etogo znat' ne nado, to kto za nego znaet (reshaet) dl'a kakogo ustrojstwa ego ispol'zowat'?
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #6 : 13-01-2004 14:01 » 

Цитата

Ja ne ponimaju otkuda konkretnij driver do peredachi emu DeviceObject znaet kto on


Знает.

Цитата

 Esli ge emu etogo znat' ne nado, to kto za nego znaet (reshaet) dl'a kakogo ustrojstwa ego ispol'zowat'?


Для этого есть реестр и ini файлы. Что такое DeviceID/VID знаешь? А про типы в спецификации на PCI или USB слышал?
Записан
Lemberg
Участник

de
Offline Offline

« Ответ #7 : 13-01-2004 14:05 » 

Znachit wnutri samogo driver nichego o tom dl'a kakih zelej ego ispol'zowat' stojat' ne dolgno?
Записан
maaaaaad
Гость
« Ответ #8 : 13-01-2004 14:11 » 

при установке ты свой драйвер САМ должен связать с шиной и нужным девайсам на ней (bus\vendor\device\subs\revision) можно брать свои, в этом случае все irp передаются затычке null (возможно). Любой драйвер можно заставить грузиться и для других устройств (включая устройства даже других шин). Это только твоя воля.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #9 : 13-01-2004 14:31 » 

Цитата

Znachit wnutri samogo driver nichego o tom dl'a kakih zelej ego ispol'zowat' stojat' ne dolgno


Это совершенно не обязательное требование- по своей воле ты можешь проверить, является ли подсунытый тебе PDO от твоего устройства. Но это лишнее. Система руководствуется на основе реестра, ini файлов, типа устройства и уникального идентификационного номера устройства, она не вызовет AddDevice драйвера, не относящегося к этому устройству.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #10 : 13-01-2004 14:34 » 

Цитата

в этом случае все irp передаются затычке null


Если ты имеешь ввиду ситуацию отсутсвия драйвера для данного устройства, то нет никаких затычек и null устройств- просто остается один PDO, управляемый драйвером шины(энумератора) без FDO над ним, то есть стек устройств остается незаконченным.
Записан
maaaaaad
Гость
« Ответ #11 : 13-01-2004 14:45 » 

Внутри должен быть код "специфичный" для данной шины, на которой ты работаешь. На самом деле никакого различия нет. Все драйвера по Windows абстрактны и полный отстой. Тк не дают реального знания. Confusing what is real.


----------------------------------
Crawling in my skin
These wounds,they will not heal
Fear is how I fall
Confusing what is real
There’s something inside me that pulls beneath the surface
Consuming, confusing
This lack of self control I fear is never ending
Controlling
Confusing what is real.
Confusing what is real.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #12 : 13-01-2004 14:51 » 

Цитата

Все драйвера по Windows абстрактны и полный отстой. Тк не дают реального знания.


Тут вобще-то не принято заниматься оплевыванием чего-то.
Записан
maaaaaad
Гость
« Ответ #13 : 13-01-2004 14:55 » 

SlavaI, нет не это я имею ввиду. Я имею ввиду отсутствие шины.
Записан
maaaaaad
Гость
« Ответ #14 : 13-01-2004 14:59 » 

SlavaI, я ЗНАЮ чем тут принято заниматься. Я показываю реальность и раскрываю глаза на этот дурной мир.
Записан
maaaaaad
Гость
« Ответ #15 : 13-01-2004 15:17 » 

Цитата

просто остается один PDO, управляемый драйвером шины(энумератора) без FDO над ним


ты меня опять наверно не правильно понял. ситуация как раз обратная: нет шины а есть драйвер устройства, работающего на этой шине
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #16 : 14-01-2004 06:30 » 

Цитата

Я показываю реальность и раскрываю глаза на этот дурной мир.


Ну если ты Гуру (учитель жизни), то ты сайтом ошибся. Гуру- это не по профилю нам, ими в других местах занимаются и другие люди.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #17 : 14-01-2004 11:27 » 

maaaaaad,  ты тока не обижайся- я пошутил.
Записан
Anonymous
Гость
« Ответ #18 : 27-05-2004 08:40 » 

А каким образом в WDM подключить к драйверу новое устройство? Есть драйвер для PCI-устройства и есть ISA-устройство, вырабатывающее прерывание по линиям IRQ10 и IRQ11. Как добавить обработчики на эти прерывания?
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #19 : 27-05-2004 15:22 » 

Этот вопрос надо оформлять как отдельный.

Цитата

А каким образом в WDM подключить к драйверу новое устройство?


Шинный драйвер перечисляет устройства и создает PDO, на этот PDO подключают FDO от драйвера, управляющего конкретным устройством, при этом вызывается процедура AddDevice драйвера, куда передается PDO, а драйвер сам подсоединяет к стеку, созданный им FDO.

Цитата

Есть драйвер для PCI-устройства и есть ISA-устройство,


Это разные шины.

Цитата

Как добавить обработчики на эти прерывания?


После присоединения DEVICE_OBJECT к стеку на FDO придет запрос IRP_MN_START_DEVICE, где сообщат ресурсы ему выделенные, там будут и прерывания, далее вызывается IoConnectInterrupt на выделенные прерывания.

P.S. Более подробно принцип построения стека устройств я уже не раз тут писал- ищи по моим постам.
Записан
maaaaaad
Гость
« Ответ #20 : 27-05-2004 15:59 » 

Цитата

Это разные шины.


Это и дятлу понятно.

WDM драйверы для PCI и ISA практически ничем не отличаются. Вся PnP информация, считываемая из конфиг спейса девайса для НЕ PnP девайсов компенсируется РУЧНЫМ конфигурированием (inf). Вот тебе подсказки =)
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #21 : 28-05-2004 06:39 » 

Цитата

Цитата:

Это разные шины.



Это и дятлу понятно.



Рад за тебя. Жжешь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines