Condividi tramite


Driver seriale USB (Usbser.sys)

Importante

Questo argomento è destinato ai programmatori. Se si verificano problemi USB da parte di un cliente, vedere Risolvere i problemi USB-C in Windows

Usare il driver USB fornito da Microsoft (Usbser.sys) per le comunicazioni e il dispositivo di controllo CDC. Microsoft incoraggia l'utente a usare i driver inclusi in Windows quando possibile.

Versioni supportate

  • Windows 11
  • Windows 10

Si applica a

  • Produttori di dispositivi di controllo CDC

In Windows 10 il driver è stato riscritto usando Kernel-Mode Driver Framework, migliorando la stabilità complessiva del driver.

  • Plug and Play migliorato e risparmio energia dal driver.
  • Aggiunta di funzionalità di risparmio energia, ad esempio sospensione selettiva USB.

Inoltre, le applicazioni UWP possono ora usare le API fornite dallo spazio dei nomi Windows.Devices.SerialCommunication che consentono alle app di comunicare con questi dispositivi.

Usbser.sys'installazione

Caricare il driver integrato fornito da Microsoft (Usbser.sys) per le comunicazioni e il dispositivo di controllo CDC.

Nota

Se si tenta di installare un driver di classe di dispositivo USB incluso in Windows, non è necessario scaricare il driver. Vengono installati automaticamente. Se non sono installati automaticamente, contattare il produttore del dispositivo. Per l'elenco dei driver di classe di dispositivo USB inclusi in Windows, vedi Driver di classe di dispositivo USB inclusi in Windows.

A partire da Windows 10, Usbser.inf è stato aggiunto alla directory %Systemroot%\INF, che carica Usbser.sys come oggetto dispositivo funzionale nello stack di dispositivi. Se il dispositivo appartiene alla classe del dispositivo di controllo CDC e comunicazioni, Usbser.sys viene caricato automaticamente. Non è necessario scrivere il proprio INF per fare riferimento al driver. Il driver viene caricato in base a una corrispondenza con ID compatibile simile ad altri driver di classe di dispositivo USB inclusi in Windows.

USB\Class_02

USB\Class_02&SubClass_02

  • Se si vuole caricare automaticamente Usbser.sys , impostare il codice della classe su 02 e il codice della sottoclasse su 02 nel descrittore di dispositivo. Con questo approccio non è necessario distribuire i file INF per il dispositivo perché il sistema usa Usbser.inf. Per altre informazioni, vedere Definizioni di classe per i dispositivi di comunicazione 1.2.

  • Se il dispositivo specifica il codice di classe 02 ma un valore di codice della sottoclasse diverso da 02, Usbser.sys non viene caricato automaticamente. Il gestore Plug and Play tenta di trovare un driver. Se non viene trovato un driver appropriato, il dispositivo potrebbe non avere un driver caricato. Potrebbe essere necessario caricare il proprio driver o scrivere un INF che fa riferimento a un altro driver in-box.

  • Se il dispositivo specifica codici di classe e sottoclasse a 02 e si vuole caricare un altro driver invece di Usbser.sys, è necessario scrivere un INF che specifica l'ID hardware del dispositivo e il driver da installare. Per esempi, esaminare i file INF inclusi nei driver di esempio e trovare dispositivi simili al dispositivo. Per informazioni sulle sezioni INF, vedere Panoramica dei file INF.

Configurare la sospensione selettiva per Usbser.sys

A partire da Windows 10, Usbser.sys supporta la sospensione selettiva USB. Consente al dispositivo usb-seriale collegato di entrare in uno stato di basso consumo quando non in uso, mentre il sistema rimane nello stato S0. Quando la comunicazione con il dispositivo riprende, il dispositivo può lasciare lo stato di sospensione e riprendere lo stato di lavoro. La funzionalità è disabilitata per impostazione predefinita e può essere abilitata e configurata impostando la voce IdleUsbSelectiveSuspendPolicy in questa chiave del Registro di sistema:

HKEY\LOCAL\MACHINE\SYSTEM\CurrentControlSet\Enum\USB\<hardware id>\<instance id>\Device Parameters

Per configurare le funzionalità di risparmio energia di Usbser.sys, è possibile impostare IdleUsbSelectiveSuspendPolicy su:

  • "0x00000001": attiva la sospensione selettiva quando è inattiva, ovvero quando non sono presenti trasferimenti di dati attivi da o verso il dispositivo.

  • "0x00000000": entra in sospensione selettiva solo quando non sono presenti handle aperti per il dispositivo.

La voce può essere aggiunta in uno dei due modi seguenti:

  • Scrivere un INF che faccia riferimento all'installazione di INF e aggiungere la voce del Registro di sistema nel modulo di protezione hardware. Sezione AddReg .

  • Descrivere la voce del Registro di sistema in un descrittore di funzionalità del sistema operativo delle proprietà estese. Aggiungere una sezione della proprietà personalizzata che imposta il campo bPropertyName su una stringa Unicode, "IdleUsbSelectiveSuspendPolicy" e wPropertyNameLength su 62 byte. Impostare il campo bPropertyData su "0x00000001" o "0x00000000". I valori delle proprietà vengono archiviati come numeri interi a 32 bit little-endian.

    Per altre informazioni, vedere Descrittori del sistema operativo Microsoft.

Sviluppare applicazioni Windows per un dispositivo USB CDC

A partire da Windows 10, un'app di Windows può inviare richieste a Usbser.sys usando lo spazio dei nomi Windows.Devices.SerialCommunication. Definisce le classi di Windows Runtime che possono usare per comunicare con un dispositivo USB CDC tramite una porta seriale o un'astrazione di una porta seriale. Le classi forniscono funzionalità per individuare tali dispositivi seriali, leggere e scrivere dati e controllare proprietà specifiche della serie per il controllo del flusso, ad esempio l'impostazione della velocità di baud, gli stati del segnale.