Постараюсь сразу к делу::
Есть WinDriver. Работает так (в моём понимании): При инициализации я задаю размер буфера для IN пакетов, он может быть хоть гигабайт. Ядрёная (kernel) часть драйвера выгребает заданный BULK ендпойнт САМА, без пинков от медленной юзерской программы. А когда я в юзерской программе делаю чтение, то оно происходит уже из ядрёного буфера.
Есть libusb. Работает так (в моём понимании): Когда я вызываю чтение, то только тогда на шине инициируется IN-транзакция. Никаких буферов нет. Поэтому когда прога работает, а я давлю "обновить" в браузере на каком-нить тяжёлом сайте, то чтение прекращается на сотню миллисекунд, и не слишком длинный буфер в моём устройстве переполняется.
Вопросы:: - верно ли я понимаю ситуацию? - может быть я неправильно использую libusb? - может быть надо использовать libusbK или ещё что? Пробовать все существующие дрова самому в облом.
Виндрайвер использовать не хочется. Хоть он и хорошо работает, но у юзеров инсталится и деинсталится с проблемами. Тот же libusb в этом смысле образцовый.
|