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[en]). CDC-пристрій може виступати як віртуальний послідовний порт для використання нового пристрою з застарілими програмами або для простоти створення нових додатків і пристроїв тими, хто не знайомий з USB на рівні програмування.

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

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

Посилання[ред. | ред. код]