pumpkin
Гость
|
|
« : 14-12-2008 04:14 » |
|
помогите, пожалуйста, новичку. Цель - драйвер виртуального USB-устройства - отображение в диспетчере устройств+ обработка неких прерываний.
при помощи VS2005 + DDK 3790.1830 + Driver Studio (по прочитанным советам не юзал lib`ы от DriverWork) создал Рыбу (оказывается, так Вы это называете, забавно:) ) для USB дравера. Скомпилировалось без ошибок, на выходи .inf и .sys в папке .386 имеются. потратил на всё это целую ночь.)
Я так понимаю, уже саму рыбу можно добавить в диспетчер устройств? пытаюсь это сделать - через добавление оборудования - системное устройство из списка вручную - путь к .inf - собственно, имею - "отсутствуют сведения об оборудовании". пробовал по всякому, в общем, Не выходит. Подскажите, что я делаю не так?
ПС. Вин ХП ППС. если нужен какой-то листинг - выложу, просто не знаю, какой.)
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #1 : 15-12-2008 07:28 » |
|
ага. ночь - это нормально) теперь от пары месяцев до полугода - на изучение)))
когда рыбу генерили - что выбирали? драйвер фильтр? функциональный драйвер? - они виртальными не становятся. им железка нужна. драйвер фильтр наверное правильнее переделывать.... что там еще на выбор было... ? в зависимости от выбора они могут вставать по разному. драйвер фильтр - встает в стек драйверов после железки... чтобы поставить драйвер без железа - его надо ручками туда воткнуть)
какие прерывания вы собираетесь орабатывать драйвером виртуального устроуства?))))) для начала вам надо просмотреть каждую функцию и выяснить что там в коде используется и зачем это надо. используя DDK. и почитать по организацию стека устройств.
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
pumpkin
Гость
|
|
« Ответ #2 : 17-12-2008 20:48 » |
|
я пробовал WDM Function Driver, WDM Bus Driver, HID Minidriver
>>драйвер фильтр - встает в стек драйверов после железки... >>чтобы поставить драйвер без железа - его надо ручками туда воткнуть)
можно в этом месте чууууть поподробнее, чтоб хотя бы знать, по каким словам гуглить?, хотя бы название основной функции, плиззз
>>какие прерывания вы собираетесь обрабатывать драйвером виртуального устройства?)))))
я сказал глупость? просто так звучит задание от препода в универе... написать драйвер Usb-устройства, чтоб отображался в списке устройств и обрабатывал прерывания. я его переспросил - какого устройства, виртуального? Да, говорит.. Это он пошутил надо мной так? ))
ПС Большое Спасибо, буду читать... в закромах имею книженцию "WDF", правда, первые сто страниц вводят новичка в ступор)
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #3 : 18-12-2008 07:52 » |
|
WDF хорошая книжка, подробная... но там не сказано куда коня запрягать)) найдите книгу Агурова по USB. - полное название в первом посте литературы.
в USB действительно есть прерывания. это не совсем те прерывания которые для контроллера прерываний, но по идеологии и назначению они похожи. виртуальное устройство - это как бы муляж реального. и не может быть у него прерываний. муляж он и есть) так что скорее всего имелось в виду драйвер для реального устройства. абстрактно его неудобно писать, поэтому возмите например USB-шную мышь. она, насколько я помню генерит именно прерывания по перемещениям(проверьте, могу ошибаться!) согласуйте с преподом. будет проще найти описания, будет возможность отлаживаться в живую. будет возможность продемонстрировать в работе. в агурове все это должно быть описано. так же должен быть пример в DDK, но он вряд ли подойдет - скорее всего он через HID интерфейс работает.
вам нужен функциональный драйвер. попробуйте указать при создании на конкретную мышь, возможно DS ресурсы сама перечислит.
|
|
« Последнее редактирование: 18-12-2008 07:55 от Ochkarik »
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
sanjaaaa
Гость
|
|
« Ответ #4 : 19-12-2008 14:22 » |
|
Драйвера всех usb-устройств - PnP. Когда втыкается устройство стек udb-драйверов через host-контроллер начинает обмениваться с устройством различными дескрипторами. В них есть поле (нето PID нето VID), по которому определяется какой конкретно драйвер PnP надо загрузить. Описал как я это понимаю.
Так вот написать драйвер PnP можно. А вот как инициировать его загрузку куда интересней вопрос.
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #5 : 19-12-2008 14:31 » |
|
sanjaaaa, вы это все - об чем?)
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
pumpkin
Гость
|
|
« Ответ #6 : 19-12-2008 23:24 » |
|
В общем, с виртуальным устройством вышла промашка конечно же). для реального устройства рыба функционального драйвера встает на раз, при подмене драйвера она вполне корректно определяется, отображается в диспетчере как драйвер, с которым устройство работает некорректно), но это, я так понимаю, так и должно быть.
Спасибо большое, уважаемый модератор, за помощь. Буду курить DDK и обрабатывать прерывания.
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #7 : 20-12-2008 10:28 » |
|
)))
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
|