WinUSB (winusb.sys) este un driver USB proprietar furnizat de Microsoft ca parte a sistemelor de operare Windows , începând cu Windows XP . Permite dezvoltatorilor de dispozitive USB compatibile cu Windows să ușureze dezvoltarea eliminând necesitatea de a crea, certifica și distribui propriile drivere de dispozitiv.
Proiectat pentru dispozitivele accesate de o singură aplicație software la un moment dat (care este potrivit pentru majoritatea dispozitivelor) și permite aplicației să acceseze direct dispozitivul printr-un simplu DLL software (winusb.dll). Biblioteca oferă configurarea interfeței USB a dispozitivului și schimbul de date cu aceasta la nivel de punct final.
Când un dispozitiv USB este conectat, acesta își comunică descriptorii gazdei. Pentru ca un dispozitiv să fie identificat ca fiind compatibil WinUSB, trebuie să aibă un descriptor de șir la indexul 0xEE care să conțină șirul „MSFT100”. WinUSB solicită apoi descriptorii furnizorului său.
O soluție este să folosiți clase de dispozitive USB standardizate . Sistemele de operare conțin drivere încorporate pentru unele dintre ele. De exemplu, clasa HID sau clasa CDC . Un dispozitiv CDC poate acționa ca un port serial virtual pentru a utiliza un dispozitiv nou cu aplicații vechi sau pentru a crea cu ușurință aplicații și dispozitive noi pentru cei care nu sunt familiarizați cu USB la nivel de programare.
Dacă soluția anterioară nu funcționează, toată lumea poate încerca să scrie un driver personalizat. Pentru versiunile mai noi de Microsoft Windows, acest lucru se poate face folosind Windows Driver Foundation .
În loc de WinUSB, puteți utiliza biblioteca open source libusb-win32. Această bibliotecă, precum WinUSB, simplifică lucrul cu dispozitive USB și poate fi utilizată în sistemele de operare Linux, Windows și Mac OS.