Dela via


Introduktion till WinUSB för utvecklare

Som drivrutinsutvecklare kan du avsevärt effektivisera utvecklingsprocessen genom att förstå WinUSB (Windows USB), särskilt när du arbetar med USB-enheter. WinUSB är en allmän drivrutin som ingår i Windows. Det gör att du kan kommunicera med USB-enheter utan att behöva skriva en anpassad drivrutin. Med den här drivrutinen kan du spara tid, minska komplexiteten och säkerställa kompatibilitet mellan olika Windows-versioner.

Viktiga fördelar med att använda WinUSB

  • Förenklad utveckling

    • Användarvänlighet: WinUSB sammanfattar mycket av komplexiteten i USB-kommunikation, vilket gör det enklare för dig att interagera med USB-enheter.
    • Ingen anpassad drivrutin behövs: För många USB-enheter kan WinUSB användas direkt, vilket eliminerar behovet av att skriva och underhålla en anpassad drivrutin.
  • Plattformsoberoende kompatibilitet

    • Standardiserat gränssnitt: WinUSB tillhandahåller ett standardiserat gränssnitt för USB-kommunikation, vilket kan bidra till att säkerställa kompatibilitet mellan olika Windows-versioner.
  • Tids- och kostnadseffektivitet

    • Kortare utvecklingstid: Användning av WinUSB kan avsevärt minska den tid som krävs för att utveckla och testa en USB-drivrutin.
    • Lägre underhållskostnader: Eftersom Microsoft underhåller WinUSB kan du lita på att det uppdateras och stöds, vilket minskar kostnaderna för långsiktigt underhåll.
  • Åtkomst till USB-funktioner

    • Fullständig USB-funktion: WinUSB stöder ett brett utbud av USB-funktioner, inklusive massöverföringar, kontrollöverföringar, avbrottsöverföringar och isochrona överföringar.

Vad du kan åstadkomma med WinUSB

  • Enhetskommunikation

    • Dataöverföring: Skicka och ta emot data till och från en USB-enhet med mass-, kontroll-, avbrotts- eller isochroniska överföringar.
    • Kontrollbegäranden: Skicka kontrollbegäranden för att konfigurera enheten eller hämta information.
  • Enhetskonfiguration

    • Inställningskonfiguration: Välj konfigurationer, gränssnitt och alternativa inställningar för att konfigurera USB-enheten.
    • Slutpunktshantering: Hantera slutpunkter för dataöverföring.
  • Enhetsuppräkning

    • Enhetsidentifiering: Räkna upp och identifiera USB-enheter som är anslutna till systemet.
    • Deskriptorhämtning: Hämta enhetsbeskrivningar, konfigurationsbeskrivningar, gränssnittsbeskrivningar och slutpunktsbeskrivningar.
  • Anpassade applikationer

    • Program i användarläge: Utveckla program i användarläge som kommunicerar med USB-enheter med winUSB-API:et.
    • Uppdateringar av inbyggd programvara: Implementera mekanismer för uppdatering av inbyggd programvara för USB-enheter.
  • Testa och felsöka

    • Prototypa: Prototypa snabbt USB-enhetskommunikation för att testa maskinvarufunktion.
    • Felsökning: Använd WinUSB för att felsöka kommunikationsproblem mellan värddatorn och USB-enheten.

Komponenter i WinUSB

WinUSB innehåller:

  • En drivrutin i kärnläge (winusb.sys)
  • Ett bibliotek för dynamisk länk i användarläge (winusb.dll) som exponerar WinUSB-funktioner som beskrivs i winusb.h. Du kan använda dessa funktioner för att hantera USB-enheter med programvara i användarläge.

Som standard installeras winusb.sys i enhetens kernellägesstack som en övre filterdrivrutin. Appar kommunicerar med enhetens funktionsdrivrutin för User-Mode Driver Framework (UMDF) för att utfärda läs-, skriv- eller enhets-I/O-kontrollbegäranden. I den här konfigurationen fungerar winusb.sys som enhetsstackens Plug and Play och strömägare. Du kan också installera winusb.sys som funktionsdrivrutin för en USB-enhet.

Kom igång med WinUSB

Det här avsnittet innehåller information om:

  • Välja rätt drivrutin för en enhet
  • Använda WinUSB för att kommunicera med USB-enheter
  • Installera winusb.sys som funktionsdrivrutin för en USB-enhet

Den innehåller även detaljerade kodexempel som visar hur appar och USB-enheter kommunicerar.

Anmärkning

WinUSB stöder isochroniska överföringar från och med Windows 8.