Произвольная USB-транзакция

Тема в разделе "WASM.NT.KERNEL", создана пользователем inviZ, 17 июл 2009.

  1. inviZ

    inviZ Сергей

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    92
    Адрес:
    Хабаровск
    В общем, проблема в чем. Необходимо сформировать транзакцию на шине USB, с произвольным адресом устройства и конечной точки (независимо от того, есть ли действительно на шине устройство с данным адресом и конечной точкой).
    Не спрашивайте меня, зачем именно это нужно (это уже вопрос не ко мне). Задача в общем-то легко реализуется прямой работой с портами контроллера (что временно и сделано сейчас), но понятно, что это на самом деле очень плохо и не по-пацански, т.к. желательно, чтобы все это работало без отрубания системных драйверов / без конфликтов с работающими системными драйверами.

    В общем, пока что вижу следующие варианты:
    1. Собираюсь попробовать IOCTL_USB_USER_REQUEST c USBUSER_OP_SEND_ONE_PACKET. Настораживает, что вроде как будто бы оно описано в хелпе к WDK, и даже вроде бы понятно, как это использовать, но гугл вообще не находит ни единого примера кода. Ну и с точки зрения производительности вариант, наверное, не из лучших (хотя не узнавал еще у вышестоящих лиц, нужна ли в данном случае макс. производительность, вероятнее всего, что нет).

    2. Написать свой драйвер контроллера с добавлением нужной функциональности. Хороший, годный, но не слишком приемлемый вариант, т.к. придется на это убить достаточно много времени.

    Больше вариантов нет, или я что-то пропустил?