2016-08-25 4 views
0

Я работаю над устройством USB, которое будет разговаривать с одним приложением. Похоже, мы можем захотеть иметь Windows-драйвер, который представляет более приятный программный интерфейс для приложения. (В отличие от того, что приложение само посылает команды нижнего уровня устройству через WinUSB.)Использование WinUSB в DLL?

Возможно ли использовать WinUSB из DLL? Choosing a driver model for developing a USB client driver не относится к этому конкретно.

Есть ли причины в этой ситуации, вместо этого я должен рассмотреть возможность написания драйвера на основе UMDF или KMDF или гибридного драйвера, который вызывает процедуры WDM?

ответ

1

Использование WinUSB - это, вероятно, правильный путь. Вы можете определенно использовать WinUSB в DLL. В общем, вы можете написать DLL, которая вызывает функции в другой DLL, и нет ничего особенного в winusb.dll, которая мешает вам это делать. Кроме того, это уже сделано в других проектах, таких как libusb и libusbp, которые компилируются в DLL, использующую winusb.dll.

Я также хотел бы предложить вам сделать свой кросс-платформенный код: не вызывайте WinUSB непосредственно из своей библиотеки DLL, а вместо этого используйте библиотеку абстракции USB, такую ​​как libusb или libusbp. Даже если вы только хотите поддерживать Windows, эти библиотеки намного проще в использовании, чем SetupAPI и WinUSB, поэтому они должны экономить время разработки. Они также сэкономят много времени, если вы когда-нибудь захотите, чтобы ваш код работал в разных операционных системах.

Я думаю, что единственная причина для написания собственного драйвера UMDF или KMDF в такой ситуации, если вам нужны расширенные функции стека Windows USB, которые не поддерживаются WinUSB. Например, если вам нужно переключить устройство на другую конфигурацию USB или выполнить сложную работу с управлением питанием или разрешить сразу нескольким приложениям использовать устройство. Если вы просто хотите отправить некоторые данные взад и вперед, WinUSB - прекрасный выбор.

 Смежные вопросы

  • Нет связанных вопросов^_^