Посылка запросов драйверу USB

Тема в разделе "WASM.OS.DEVEL", создана пользователем acckiitvar, 29 ноя 2018.

Метки:
  1. acckiitvar

    acckiitvar Member

    Публикаций:
    0
    Регистрация:
    26 сен 2011
    Сообщения:
    70
    Доброго времени суток!
    Я пытаюсь решить следующую задачу:
    Нужно сгенерировать транзакцию на контроллере ehci направленную на конкретное устройство (device:endpoint), причем устройство может как существовать, так и нет.
    Из документации на ehci контроллер видно, чтобы создать транзакцию на шине необходимо просто знать адрес устройства и поставить транзакцию в очередь. Я реализовал такую штуку, но так и не смог разойтись со штатной очередью Винды, штатный драйвер просто умирал. Теперь хочу это повторить используя средства ОС и не знаю куда копать. Я попробовал user-mode libusb в связке с драйвером libusbK.sys, но они работают только с зарегистрированными устройствами и при попытке указать несуществующее устройство отваливаются ошибкой раньше, не создавая транзакцию.Плюс они посылают запрос через весь стек драйверов USB (не знаю хорошо это или плохо).
    В данный момент я рассматриваю возможность написания драйвера с посылкой URB (USB Request Block),но не знаю приведет ли это к успеху. Соответственно хочу узнать у уважаемых форумчан, ковырялся ли кто-то с подобной задачей и какие результаты получились.
    Ведь в принципе драйвер usbehc.sys тоже обрабатывает запросы, которые сведены к тому минимуму, что мне нужно, но как узнать его интерфейс кроме дизассемблирования?
    А также может существует еще какой-то метод о котором я не подумал?