WinUSB

WinUSB (winusb.sys) — проприетарный USB-драйвер, поставляемый корпорацией Microsoft в составе своих операционных систем семейства Windows, начиная с Windows XP. Позволяет разработчикам Windows-совместимых USB-устройств облегчить разработку за счет отказа от создания, сертификации и распространения собственных драйверов устройств.

Предназначен для устройств, доступ к которым осуществляется только одним программным приложением в любой момент времени (что подходит для большинства устройств) и позволяет приложению получать прямой доступ к устройству через простую программную DLL-библиотеку (winusb.dll). Библиотека обеспечивает конфигурирование USB-интерфейса устройства и обмен данными с ним на уровне конечных точек.

Техническая реализация

При подключении USB устройства оно сообщает хосту свои дескрипторы. Чтобы устройство определилось как совместимое с WinUSB, в нем должен существовать строковый дескриптор с индексом 0xEE, содержащий строку «MSFT100». После этого WinUSB запрашивает свои дескрипторы вендора.

Достоинства и недостатки

Достоинства

  • Не требуется знать, как писать драйверы.
  • Упрощается и ускоряется разработка.

Недостатки

  • Только одно приложение имеет доступ к устройству в любой момент.
  • Поддержка изохронной передачи появилась начиная с Windows 8.1.
  • Некоторые ограничения в конфигурировании USB-интерфейса устройства.

Другие решения

Одним из решений является использование стандартизированных классов USB-устройств. Операционные системы содержат встроенные драйверы для некоторых из них. Например, HID-класс или CDC-класс (USB communications device class). CDC-устройство может выступать как виртуальный последовательный порт для использования нового устройства с устаревшими приложениями или для простоты создания новых приложений и устройств теми, кто не знаком с USB на уровне программирования.

Если предыдущий вариант решения не подходит, каждый может попробовать написать специализированный драйвер. Для новых версий Microsoft Windows это можно сделать при помощи Windows Driver Foundation.

Вместо WinUSB можно использовать библиотеку с открытым исходным кодом libusb-win32. Эта библиотека так же, как WinUSB, упрощает работу с USB-устройствами и может применяться в операционных системах Linux, Windows и Mac OS.

Ссылки

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.