Dela via


USB-seriedrivrutin (Usbser.sys)

Använd den Microsoft-tillhandahållna USB-drivrutinen (Usbser.sys) för dina kommunikations- och kontrollenheter för kommunikationsenhetsklassen (CDC). Använd de drivrutiner som ingår i Windows när det är möjligt.

Viktigt!

Den här artikeln är avsedd för tillverkare av CDC-kontrollenheter. Om du är kund med USB-problem kan du läsa Åtgärda USB-C problem i Windows

Usbser.sys implementeras med hjälp avKernel-Mode Driver Framework. Drivrutinen stöder Plug and Play och energisparfunktioner som USB Selective Suspend.

UWP-program (Universal Windows Platform) kan använda API:er som tillhandahålls av namnområdet Windows.Devices.SerialCommunication , så att appar kan kommunicera med CDC-enheter.

Usbser.sys-installation

Läs in den in-box drivrutinen som tillhandahålls av Microsoft (Usbser.sys) för din kommunikations- och CDC-kontrollenhet.

Anmärkning

Om du försöker installera en USB-enhetsklassdrivrutin som ingår i Windows behöver du inte ladda ned drivrutinen. Windows installerar dessa drivrutiner automatiskt. Om Windows inte installerar drivrutinen kontaktar du enhetstillverkaren. En lista över USB-enhetsklassdrivrutiner som ingår i Windows finns i USB-enhetsklassdrivrutiner som ingår i Windows.

Usbser.inf finns i %Systemroot%\INF katalogen. Den här INF-filen (setup information) laddar Usbser.sys som funktionsenhetsobjektet (FDO) i den enhetsstacken. Om din enhet tillhör kommunikations- och CDC-kontrollenhetens klass, läses Usbser.sys in automatiskt. Du behöver inte skriva en egen INF-fil för att referera till drivrutinen. Windows läser in drivrutinen baserat på en kompatibel ID-matchning, ungefär som andra USB-enhetsklassdrivrutiner som ingår i Windows.

USB\Class_02

USB\Class_02&SubClass_02

Om du vill läsa in Usbser.sys automatiskt anger du klasskoden till 02 och underklasskoden till 02 i enhetsbeskrivningen. Med den här metoden behöver du inte distribuera INF-filer för enheten eftersom systemet använder Usbser.inf. Mer information finns i Klassdefinitioner för kommunikationsenheter 1.2.

Om enheten anger klasskod 02 men en annan underklasskod än 02 läses Usbser.sys inte in automatiskt. Plug and Play-hanteraren försöker hitta en drivrutin. Om Windows inte hittar någon lämplig drivrutin kanske enheten inte har någon inläst drivrutin. Du kan behöva läsa in din egen drivrutin eller skriva en INF-fil som refererar till en annan in-box-drivrutin.

Om enheten anger klass- och underklasskoder på 02 och du vill läsa in en annan drivrutin i stället för Usbser.sysskriver du en INF-fil. I INF-filen anger du maskinvaru-ID för enheten och drivrutinen som ska installeras.

Konfigurera selektiv avstängning för Usbser.sys

Usbser.sys stöder USB-selektiv avstängning. Med den här drivrutinen kan den anslutna USB-till-serieenheten ange ett lågeffekttillstånd när den inte används, medan systemet förblir i S0-tillståndet. När kommunikationen med enheten återupptas lämnar enheten paustillståndet och återupptar arbetstillståndet. Funktionen är inaktiverad som standard, men kan aktiveras och konfigureras genom att ange posten IdleUsbSelectiveSuspendPolicy under den här registernyckeln:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\<hardware id>\<instance id>\Device Parameters

Om du vill konfigurera energisparfunktioner i Usbser.sysanger du parametern IdleUsbSelectiveSuspendPolicy till:

Värde Beteende
0x00000001 Ange selektiv paus när den är inaktiv, dvs. när det inte finns några aktiva dataöverföringar till eller från enheten.
0x00000000 Ange endast selektiv avstängning när det inte finns några öppna handtag till enheten.

Lägg till posten på något av två sätt:

  1. Skriv en INF som refererar till installations-INF och lägg till registerposten i HW.AddReg-avsnittet.

  2. Beskriv registerposten i en funktionsbeskrivning för utökade egenskaper i operativsystemet. Lägg till ett anpassat egenskapsavsnitt som anger fältet bPropertyName till en Unicode-sträng: IdleUsbSelectiveSuspendPolicy. Ange wPropertyNameLength till 62 bytes. Ange fältet bPropertyData till 0x00000001 eller 0x00000000. Egenskapsvärdena lagras som 32-bitars heltal i little-endian-format.

    Mer information finns i Microsoft OS-beskrivningar.

Utveckla Windows-program för en USB CDC-enhet

En Windows-app skickar begäranden till Usbser.sys med namnområdet Windows.Devices.SerialCommunication . Namnområdet definierar Windows Runtime-klasser som kommunicerar med en USB CDC-enhet via en seriell port eller en abstraktion av en serieport. Med klasserna kan du identifiera serieenheter, läsa och skriva data och kontrollera seriespecifika egenskaper för flödeskontroll, till exempel ställa in överföringshastighet och signaltillstånd.