USB in Windows - Domande frequenti

Questo argomento presenta domande frequenti per gli sviluppatori di driver che non hanno esperienza nello sviluppo e nell'integrazione di dispositivi e driver USB con sistemi operativi Windows.

Ho sentito numerosi termini USB generati quasi interscambiamente. Cosa significano?

Si supponga di vedere qualcosa di simile : "Grazie a USB 3.0, posso connettere un'unità personale USB SuperSpeed al controller host xHCI del MIO PC e copiare i file più velocemente".

Comprendere i termini USB in tale frase. USB 3.0, USB 2.0 e USB 1.0 fanno riferimento al numero di revisione della specifica USB dal forum degli implementatori USB. Le specifiche USB definiscono il modo in cui il PC host e il dispositivo USB comunicano tra loro.

Il numero di versione indica anche la velocità massima di trasmissione. La revisione della specifica più recente è USB 3.0, che specifica una velocità massima di trasmissione fino a 5 Gbps. USB 1.0 definisce due diverse velocità dei dati, USB a bassa velocità (fino a 1,5 Mbps) e USB a velocità completa (fino a 12 Mbps). USB 2.0 definisce una nuova velocità dati, usb ad alta velocità (480 Mbps), mantenendo il supporto per i dispositivi a velocità bassa e completa. USB 3.0 continua a funzionare con tutte le velocità dei dati definite in precedenza. Se si esamina la creazione di pacchetti di prodotti, SuperSpeed USB fa riferimento ai dispositivi USB 3.0 più recenti. Hi-Speed USB viene usato per descrivere dispositivi USB 2.0 ad alta velocità. USB, senza descrittore, fa riferimento a dispositivi a bassa velocità e velocità completa.

Oltre al protocollo USB, esiste una seconda specifica per il controller host USB, il pezzo di hardware nel PC a cui è connesso un dispositivo. La specifica Dell'interfaccia controller host definisce il modo in cui l'hardware del controller host e il software interagiscono. L'interfaccia del controller host eXtensible definisce un controller host USB 3.0. L'interfaccia del controller host avanzato (EHCI) definisce un controller host USB 2.0. Il controller host universale (UHCI) e open host controller (OHCI) sono due implementazioni alternative di un controller host USB 1.0.

Il pc ha porte USB 3.0?

Le porte USB 3.0 sono contrassegnate con il logo USB SuperSpeed o la porta è in genere blu.

porta con logo USB

porta usb 3.0 blu

I PC più recenti hanno entrambe le porte USB 3.0 e USB 2.0. Se si vuole che il dispositivo USB SuperSpeed esegua una velocità massima, trovare una porta USB 3.0 e connettere il dispositivo a tale porta. Un dispositivo SuperSpeed connesso a una porta USB 2.0 funziona ad alta velocità.

È anche possibile verificare che una determinata porta sia una porta USB 3.0 in Gestione dispositivi. In Windows Vista o versione successiva di Windows aprire Gestione dispositivi e selezionare la porta dall'elenco.

controller host usb in Gestione dispositivi

Se si dispone di un controller host eXtensible, supporta USB 3.0.

È necessario installare i driver per il controller host eXtensible?

Windows 8 e Windows Server 2012 includere il supporto per USB 3.0.

Se il PC ha porte USB 3.0 ed esegue una versione di Windows precedente alla Windows 8, i driver del controller host vengono forniti dal produttore del PC. Se è necessario reinstallare tali driver, è necessario ottenerli dal produttore.

Se è stata aggiunta una scheda controller USB 3.0 al PC che esegue una versione di Windows precedente alla Windows 8, è necessario installare i driver forniti dal produttore della scheda controller.

In Windows 8, il set fornito da Microsoft di driver USB 3.0 (stack di driver USB) funziona con la maggior parte dei controller host. Lo stack di driver MICROSOFT USB 3.0 non funziona con il controller Fresco Logic FL1000. Per determinare se si dispone di un controller FL1000, aprire Gestione dispositivi e espandere Controller del bus seriale universale. Visualizzare le proprietà del controller selezionando e tenendo premuto (o facendo clic con il pulsante destro del mouse) il nodo del controller. Nella scheda Dettagli selezionare Proprietà Ids hardware nell'elenco. Se l'ID hardware inizia con PCI\VEN_1B73&DEV_1000, è fl1000. Per tale controller, scaricare e installare i driver dal produttore di schede pc o controller.

Perché vengono visualizzati diversi controller host nel sistema?

Oltre ai dispositivi USB che si connettono al PC, esistono diversi dispositivi integrati all'interno del PC che potrebbero essere connessi tramite USB, ad esempio una webcam, un lettore di impronte digitali, un lettore di schede SD. Per connettere tutti questi dispositivi e fornire comunque porte USB esterne, il PC supporta diversi controller host USB.

Il controller host USB 3.0 xHCI è completamente compatibile con tutte le velocità del dispositivo USB, SuperSpeed, alta velocità, velocità completa e bassa velocità. È possibile connettere qualsiasi dispositivo direttamente a un controller xHCI e aspettarsi che il dispositivo funzioni. Per il controller EHCI, non è il caso. Anche se la specifica USB 2.0 supporta tutte le velocità dei dispositivi, il controller EHCI supporta solo dispositivi USB ad alta velocità. Affinché i dispositivi USB a velocità massima e bassa velocità funzionino, devono essere connessi al controller EHCI tramite un hub USB 2.0 oppure devono essere connessi a un controller UHCI o OHCI.

Per i PC più recenti, la maggior parte delle porte USB 2.0 esposte dai PC è a valle di un hub USB 2.0. Questo hub è connesso a un controller EHCI. Ciò consente alla porta USB 2.0 del PC di funzionare con tutte le velocità dei dispositivi. I dispositivi SuperSpeed si comportano come dispositivi ad alta velocità quando si è connessi a una porta 2.0.

Dopo aver rilasciato la specifica USB 2.0, i PC hanno usato una combinazione di controller host per supportare tutte le velocità dei dispositivi. Una singola porta USB 2.0 sarebbe cablata a due controller host, un controller host EHCI e un controller host UHCI o OHCI. Quando si collega un dispositivo, l'hardware instrada dinamicamente la connessione a uno dei due host. La routine dipende dalla velocità del dispositivo.

Perché vengono visualizzati due hub in Gestione dispositivi quando sono connessi un solo hub USB 3.0?

Mentre i controller host xHCI funzionano con qualsiasi velocità del dispositivo, un hub SuperSpeed funziona solo con i dispositivi SuperSpeed. Per garantire che gli hub USB 3.0 possano funzionare con tutte le velocità, hanno due parti: un hub SuperSpeed e un hub USB 2.0. Un hub USB 3.0 è in grado di supportare tutte le velocità tramite il routing dinamico dei dispositivi, all'hub SuperSpeed o all'hub 2.0, in base alla velocità del dispositivo.

Aprire Gestione dispositivi, visualizzare i dispositivi in base alla connessione e quindi individuare il controller host eXtensible. Quando si connette un singolo hub USB 3.0 alla porta USB 3.0, sono presenti due hub downstream dell'hub radice dei controller.

hub usb 3.0 in Gestione dispositivi

Nell'esempio seguente, un dispositivo di archiviazione USB SuperSpeed e un dispositivo USB Audio sono entrambi connessi a un hub USB 3.0. È possibile notare che il dispositivo di archiviazione è downstream dell'hub SuperSpeed e il dispositivo audio è downstream dell'hub USB 2.0.

hub usb 3.0 con dispositivi connessi in Gestione dispositivi

Quale set di driver viene caricato per i dispositivi connessi alle porte 2.0?

Viene caricato un set diverso di file binari per ogni tipo di controller host. È importante comprendere che lo stack di driver USB caricato da Windows è correlato al tipo di controller host, non alla velocità del dispositivo connesso.

In questa immagine è possibile visualizzare quali driver vengono caricati per ognuno dei diversi tipi di controller host USB.

stack di driver usb in Windows 8

Se la porta USB 3.0 viene instradata correttamente a un controller xHCI, Windows carica lo stack di driver xHCI (noto anche come stack di driver USB 3.0).

Se la porta USB 2.0 è connessa a un controller EHCI tramite un hub USB 2.0, il traffico passa attraverso il controller EHCI e lo stack di driver USB 2.0 viene caricato.

Per altre informazioni sui driver nello stack di driver USB, vedere driver sul lato host USB in Windows.

Se le porte USB 2.0 del PC usano un controller complementare, il controller host a cui viene instradata la porta dipende dalla velocità del dispositivo. Ad esempio, un dispositivo a bassa velocità si connette tramite un controller UHCI o OHCI e usa il driver USBUHCI o USBOHCI. Il PC indirizza un dispositivo ad alta velocità a un controller EHCI, pertanto Windows usa il driver USBEHCI.

Le diverse velocità del dispositivo non determinano il driver caricato per il controller. Tuttavia, diverse velocità del dispositivo potrebbero determinare quale controller viene usato. Il controller usa sempre lo stesso driver.

Ricerca per categorie determinare se il dispositivo USB 3.0 è operativo come SuperSpeed?

In Windows 8, assicurarsi di avere una porta USB 3.0 e un controller host xHCI. Se il dispositivo USB SuperSpeed è connesso al controller host xHCI, Windows 8 mostra un messaggio "Connesso a USB 3.0" in parti specifiche dell'interfaccia utente di Windows 8. Se il dispositivo è connesso a un controller EHCI anziché al controller XHCI, i messaggi verranno invece letti, "Il dispositivo può eseguire più velocemente quando connesso a USB 3.0".

È possibile visualizzare questi messaggi dell'interfaccia utente in Impostazioni PC.

  1. Aprire la barra degli accessi (trascinare il cursore nell'angolo superiore o inferiore destro dello schermo, digitare Windows Key + C o scorrere verso destra con il dito).
  2. Selezionare Impostazioni e quindi Modificare le impostazioni del PC.
  3. Selezionare i dispositivi in Impostazioni PC.

Questa immagine mostra il messaggio dell'interfaccia utente quando il dispositivo USB 3.0 è operativo in SuperSpeed.

Screenshot che mostra

Questa immagine mostra il messaggio dell'interfaccia utente quando il dispositivo USB funziona a una velocità del bus inferiore a SuperSpeed.

Screenshot che mostra

È possibile visualizzare messaggi simili in Dispositivi e stampanti, come illustrato in queste immagini.

Screenshot che mostra

dispositivo superspeed operativo ad alta velocità

Se il dispositivo USB 3.0 è un dispositivo di archiviazione, Esplora risorse mostra messaggi simili quando l'etichetta del volume è selezionata, come illustrato di seguito. Si noti che il riquadro Visualizza -> Dettagli deve essere selezionato per il messaggio da visualizzare.

Screenshot che mostra un dispositivo S B con velocità superiore selezionata in

dispositivo usb superspeed che opera ad alta velocità

Se si scrive un driver di dispositivo, lo strumento USBView , incluso in Windows Driver Kit (WDK), è molto utile. Per il Windows 8 WDK, Microsoft ha aggiornato USBView per visualizzare le informazioni USB SuperSpeed. È possibile usare questo strumento per determinare se il dispositivo è operativo in SuperSpeed. Questa immagine mostra un dispositivo USB 3.0 che opera in SuperSpeed in USBView.

dispositivo usb superspeed operativo con velocità superiore

Se si è uno sviluppatore di driver di dispositivo, lo stack di driver USB espone un nuovo IOCTL denominato IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2, che è possibile usare per eseguire query sulle informazioni sulla velocità per i dispositivi USB 3.0.

Perché il mio dispositivo USB SuperSpeed non è più veloce di un dispositivo USB ad alta velocità equivalente?

In genere, se un dispositivo USB 3.0 non è più veloce di un dispositivo USB ad alta velocità, non è eseguito in SuperSpeed. Se il dispositivo USB SuperSpeed è connesso a una porta USB 3.0, potrebbe non funzionare in SuperSpeed per i motivi seguenti:

  • Si usa un hub USB 2.0.

    Se si usa un hub, verificare che sia un hub USB 3.0. Se si usa un hub USB 2.0, qualsiasi dispositivo USB superSpeed collegato funzionerà ad alta velocità. Sostituire l'hub con un hub USB 3.0 o connettere il dispositivo direttamente alla porta USB 3.0.

  • Il firmware nell'hub USB 3.0 non è aggiornato.

    Alcuni hub USB 3.0 precedenti non funzionavano correttamente. Di conseguenza, Windows usa solo la parte 2.0 di tali hub. Se Gestione dispositivi indica un hub "Non funzionale", come illustrato in questa immagine, Windows 8 non usa la parte 3.0 dell'hub.

    hub usb non funzionale

    È possibile connettere il dispositivo SuperSpeed direttamente alla porta USB 3.0 o aggiornare il firmware nell'hub. Windows 8 riconosce gli hub con firmware più recente.

  • Il dispositivo è connesso a un cavo USB 2.0.

    Assicurarsi che il cavo usato per connettere il dispositivo sia un cavo USB 3.0. È anche possibile che il cavo USB 3.0 abbia problemi di integrità del segnale. In questo caso, il dispositivo potrebbe passare ad alta velocità. In tal caso, è necessario usare un cavo USB 3.0 diverso.

  • Il firmware nel dispositivo non è aggiornato.

    Aggiornare il firmware per il dispositivo USB SuperSpeed ottenendo la versione più recente dal sito Web del produttore. Alcuni produttori di dispositivi USB SuperSpeed rilasciano correzioni, per i bug trovati nel dispositivo, come aggiornamenti del firmware.

  • Il firmware nel controller host non è aggiornato.

    Aggiornare il firmware per il controller USB 3.0 ottenendo la versione più recente dal sito del produttore del PC o dal sito del produttore della scheda. Alcuni produttori di controller USB 3.0 rilasciano correzioni, per i bug trovati nel controller, come aggiornamenti del firmware.

  • Il BIOS per il sistema non è aggiornato.

    Aggiornare il BIOS per il sistema ottenendo la versione più recente dal computer maker. In alcune schede madri, il BIOS può instradare in modo errato un dispositivo connesso a un controller host xHCI a un controller EHCI. Che il routing errato forza un dispositivo USB SuperSpeed a funzionare ad alta velocità. Un aggiornamento BIOS può risolvere questo problema.

È possibile avere un dispositivo composito e composto in un unico pezzo di hardware?

Sì. Microsoft Natural Keyboard Pro, che ha un hub con tre porte, con alimentazione del bus, è un esempio di un dispositivo USB composito composto. Il dispositivo ha un dispositivo composito collegato alla porta 1. Due porte aggiuntive vengono esposte all'utente finale.

Il dispositivo collegato alla porta 1 è un dispositivo composito a bassa velocità. Il dispositivo ha due interfacce, entrambe conformi alla definizione della classe di dispositivo standard USB per i dispositivi dell'interfaccia umana (HID). Il dispositivo composito fornisce due interfacce HID anziché più raccolte su una singola interfaccia HID usando raccolte di primo livello. Questa progettazione è stata scelta per la compatibilità con i BIOS meno recenti.

Perché alcuni dispositivi USB vengono reinstallati quando vengono spostati in una nuova porta?

In Windows 2000 e versioni successive, viene creato un nuovo oggetto dispositivo fisico (PDO) quando un dispositivo USB viene spostato da una porta a un'altra. Se l'hardware segnala un numero di serie USB univoco, non viene creato un nuovo PDO.

Per riutilizzare lo stesso PDO e per assicurarsi che l'esperienza del dispositivo sia invariata se il dispositivo viene reinsertato nella stessa porta o in una nuova porta, i fornitori di hardware devono archiviare un numero di serie nel dispositivo. In base ai requisiti del programma di certificazione hardware di Windows, il numero di serie deve essere univoco per tutti i dispositivi che condividono l'identificatore di installazione del dispositivo.

C'è un elenco di consigli di progettazione per la creazione di pacchetti di prodotti USB?

USB-IF ha lavorato con Microsoft e altre aziende membro USB-IF per sviluppare un elenco di raccomandazioni per i fornitori hardware indipendenti da includere nel loro pacchetto.

Altre informazioni sono disponibili nel sito Web USB.

Per USB Hi-Speed e SuperSpeed fare riferimento a: https://www.usb.org/.

È necessario riscrivere il driver client per supportare i dispositivi USB 3.0?

Tutti i driver client esistenti devono continuare a funzionare, come è, quando un dispositivo a bassa velocità, piena o alta velocità è connesso a una porta USB 3.0. In Windows 8 è stata garantita la compatibilità con i driver client esistenti.

Lo stack di driver USB 3.0 gestisce i livelli IRQL, il contesto del chiamante e lo stato degli errori; frequenza di ripetizione dei tentativi e tempi durante l'interazione con i dispositivi e altro ancora per assicurarsi che i driver esistenti continuino a funzionare. È ancora molto importante testare.

Si verificano errori comuni perché:

  • Il descrittore dell'endpoint del driver interrompe l'analisi a causa della presenza di descrittori complementari dell'endpoint SuperSpeed.
  • A causa di una maggiore velocità, è possibile che si verifichino problemi di intervallo a livello di protocollo applicazione.
  • Le dimensioni massime dei pacchetti supportate dall'endpoint potrebbero essere diverse.
  • A causa della gestione della potenza delle funzioni, il tempo per l'operazione di sospensione selettiva potrebbe essere diverso.

In Windows 7 e versione precedente dei sistemi operativi, lo stack di driver USB 3.0 viene fornito da terze parti. È quindi consigliabile testare il driver per usare stack di driver USB di terze parti.

I nuovi driver client in Windows 8 per dispositivi USB ad alta velocità e SuperSpeed dovrebbero scegliere nuove funzionalità.

Quale driver viene caricato per l'uso del dispositivo di archiviazione SuperSpeed, Uaspstor.sys o Usbstor.sys?

Il protocollo USB Attached SCSI (UAS) è un nuovo protocollo di archiviazione di massa progettato per migliorare le prestazioni rispetto al protocollo di archiviazione di massa USB stabilito, Bulk-Only-Transport (BOT). Ciò avviene riducendo il sovraccarico del protocollo, supportando l'accodamento dei comandi nativi SATA (NCQ) e elaborando più comandi in parallelo. A tale scopo, UAS usa una nuova funzionalità USB 3.0 per i trasferimenti bulk denominati stream.

Il driver di archiviazione di massa esistente, Usbstor.sys, usa il protocollo BOT. Funziona con tutte le velocità dei dispositivi, inclusi i dispositivi USB SuperSpeed.

Per Windows 8, Microsoft include un nuovo driver di classe di archiviazione di massa, Uaspstor.sys che usa il protocollo UAS. Poiché i flussi sono nuovi a USB 3.0, quindi Uaspstor.sys può usare flussi solo quando l'hardware supporta i flussi (un dispositivo USB SuperSpeed è connesso a un controller host xHCI). Il driver include anche il supporto per i flussi software, quindi può anche caricare per i dispositivi che operano ad alta velocità, indipendentemente dal tipo host.

Se si connette un dispositivo di archiviazione di massa a Windows 8 e tale dispositivo supporta UAS, Windows carica Uaspstor.sys. In alcuni casi, potrebbero verificarsi problemi noti con i flussi hardware in un controller host xHCI specifico o problemi noti con l'implementazione del protocollo UAS di un dispositivo. In questi casi, Windows torna al protocollo BOT e carica invece il driver Usbstor.sys.

Uaspstor.sys è nuovo a Windows 8. Non è presente nelle versioni precedenti di Windows.

Quali classi DWG USB supportano Microsoft?

Windows supporta diverse classi USB definite dal gruppo di lavoro del dispositivo USB . Per l'elenco corrente di specifiche e codici di classe USB, visitare il sito Web USB DWG all'indirizzo https://www.usb.org/documents.

Questa tabella evidenzia le classi DWG USB supportate in Windows e identifica anche le versioni di Windows che supportano ogni classe.

Specifica della classe codice bDeviceClass Nome del driver Supporto di Windows
Classe Bluetooth 0xE0 Bthusb.sys Windows XP e versioni successive
Dispositivi di interfaccia chip/smart card (CCID) 0x0B Usbccid.sys

Windows Server 2008 e versioni successive

Windows Vista e versioni successive

Windows Server 2003

Windows XP

Windows 2000

Classe Hub 0x09 Usbhub.sys

Windows Server 2003 e versioni successive

Windows XP e versioni successive

Windows 2000 e versioni successive

Human Interface Device (HID) 0x03 Hidusb.sys

Windows Server 2003 e versioni successive

Windows XP e versioni successive

Windows 2000 e versioni successive

Classe di archiviazione di massa (MSC) 0x08 Usbstor.sys

Windows Server 2003 e versioni successive

Windows XP e versioni successive

Windows 2000 e versioni successive

USB Attached SCSI (UAS) 0x08 Uaspstor.sys

Windows Server 2012

Windows 8

Classe di stampa 0x07 Usbprint.sys

Windows Server 2003 e versioni successive

Windows XP e versioni successive

Windows 2000 e versioni successive

Analisi/creazione di immagini (PTP) 0x06

WpdUsb.sys

Usbscan.sys

Windows Server 2003 e versioni successive

Windows XP e versioni successive

Windows 2000 e versioni successive

Trasferimento multimediale (MTP) 0x06 WpdUsb.sys

Windows Server 2003 e versioni successive

Windows XP e versioni successive

Classe audio USB 0x01 Usbaudio.sys

Windows Server 2003 e versioni successive

Windows XP e versioni successive

Windows 2000 e versioni successive

Classe modem (CDC) 0x02 Usbser.sys

Windows Server 2003 e versioni successive

Windows XP e versioni successive

Windows 2000 e versioni successive

Classe video (UVC) 0x0E Usbvideo.sys

Windows Vista e versioni successive

Windows XP

*Istruzioni speciali sono necessarie per caricare questo driver perché questo driver potrebbe essere stato rilasciato più tardi del sistema operativo. I driver di classe Windows potrebbero non supportare tutte le funzionalità descritte in una specifica della classe DWG. In questo caso, il driver non viene caricato in base alla corrispondenza della classe. Per altre informazioni sulle funzionalità implementate all'interno di una specifica di classe, vedere la documentazione di WDK.

Quale classe di installazione del dispositivo è consigliabile usare per un dispositivo USB personalizzato?

Microsoft fornisce classi di configurazione definite dal sistema per la maggior parte dei tipi di dispositivo. I GUID della classe di installazione definiti dal sistema sono definiti in Devguid.h. Per altre informazioni, vedere WDK. Per un elenco dei GUID della classe Windows, vedere questi argomenti:

I fornitori di hardware indipendenti devono usare la classe di installazione associata al tipo di dispositivo USB, non con il tipo di bus. Se si sta sviluppando un tipo di dispositivo per il quale Microsoft non ha fornito un GUID di classe esistente, è possibile definire una nuova classe di installazione del dispositivo.

In Windows 8 è stata definita una nuova classe di installazione denominata USBDevice (ClassGuid = {88BAE032-5A81-49f0-BC3D-A4FF138216D6}). Se si sta sviluppando un tipo di dispositivo, associare il dispositivo a USBDevice anziché alla classe di installazione, USB. La classe USBDevice funziona in Windows Vista e versioni successive del sistema operativo.

La classe di installazione USB (ClassGuid = {36fc9e60-c465-11cf-8056-44555353540000}) è riservata solo per i controller host USB e gli hub USB e non deve essere usato per altre categorie di dispositivi. L'uso di questa classe di installazione in modo non corretto può causare l'esito negativo del test del logo di Windows.

Perché la CPU non verrà immessa in C3 quando si allegano alcuni dispositivi USB?

Quando un dispositivo USB è connesso, il controller host USB esegue il polling dell'utilità di pianificazione dei frame, ovvero un'operazione master del bus DMA (Direct Memory Access). "Eventi di interruzione" come il traffico master del bus, gli interruzioni o diverse altre attività di sistema spostano una CPU fuori da C3 perché, per definizione, la cache della CPU non può essere spostata mentre è in C3.

Esistono due modi per risolvere questo problema:

  • Rimozione hardware.

    A volte, l'hardware può essere disconnesso elettronicamente dal bus seriale universale. Ad esempio, quando il supporto di archiviazione viene rimosso dal lettore USB, il lettore USB può emulare una disconnessione elettronica e riconnettersi quando il supporto viene reinsertato. In questo caso, le transizioni C3 possono verificarsi perché nessun dispositivo USB si trova nel controller host.

  • Sospensione selettiva.

    L'unica alternativa disponibile in Windows XP e nei sistemi operativi successivi consiste nel supportare la sospensione selettiva USB. Questa funzionalità consente a un driver di sospendere un dispositivo USB che controlla quando il dispositivo diventa inattiva, anche se il sistema stesso rimane in uno stato di alimentazione completamente operativa (S0). La sospensione selettiva è particolarmente potente se tutti i driver di funzione USB lo supportano. Se anche un driver non lo supporta, la CPU non può immettere C3. Per altre informazioni sulla sospensione selettiva, vedere WDK.

Quali driver di classe USB supportano la sospensione selettiva?

Di seguito è riportato un elenco di driver di classe USB in Windows 8 che supportano la sospensione selettiva:

  • Bluetooth

    Questo driver può sospendere in modo selettivo i dispositivi nei computer che eseguono Windows XP Service Pack 2 e versioni successive di Windows. Il driver richiede la radio Bluetooth per impostare i bit di riattivazione automatica e remota nel descrittore di configurazione. Il driver sospende in modo selettivo (D2) la radio Bluetooth quando non esistono connessioni Bluetooth attive.

  • USB HID

    Questo driver può sospendere in modo selettivo un dispositivo HID. È responsabilità dell'utente attivare il segnale di riattivazione remota in tutte le modifiche dello stato del dispositivo. Per abilitare la sospensione selettiva nello stack HID, è necessario abilitare il valore del Registro di sistema SelettivoSuspendEnabled per il VID+PID specifico del dispositivo. Per esempi, vedere Input.inf.

    Nei sistemi che supportano lo standby connesso di Windows 8, questo driver entra in sospensione selettiva (D2) quando il sistema si trova in Standby connesso. Questo driver può riattivare il sistema e attivare lo schermo.

  • USB Hub

    Questo driver può sospendere in modo selettivo un hub radice o esterno quando nessun dispositivo è collegato a esso o quando tutti i dispositivi collegati a tale hub possono essere sospesi in modo selettivo.

  • USB Modem

    Questo driver può sospendere in modo selettivo il dispositivo quando non esistono connessioni modem attive.

  • Archiviazione USB (BOT)

    Questo driver può sospendere in modo selettivo i dispositivi di archiviazione (D3) nei sistemi che supportano Windows 8 Standby connesso, quando questi sistemi passano in Standby connesso. Come HID, esiste un override del Registro di sistema per abilitare la sospensione selettiva su tutti i sistemi Windows 8.

  • Archiviazione USB (UAS)

    Questo driver può sospendere in modo selettivo (D3) un dispositivo di archiviazione quando è inattiva per un periodo di timeout del disco.

  • USB Video

    Questo driver può sospendere in modo selettivo (D3) una webcam in Windows Vista e in un sistema operativo successivo.

  • USB Audio

    Questo driver può sospendere in modo selettivo (D3) un dispositivo audio USB in Windows 7 e versioni successive quando il computer è in alimentazione a batteria.

  • USB composito

    Questo driver può sospendere in modo selettivo i dispositivi compositi (D3) quando tutti gli elementi figlio sono in sospensione. Nei sistemi che supportano D3-Cold, tutti i bambini devono scegliere D3-Cold.

  • USB Smart Card

    Questo driver può sospendere in modo selettivo i dispositivi dell'interfaccia smart card (D2) per impostazione predefinita nei sistemi operativi Windows 7 e versioni successive.

  • Periferiche USB generiche (WinUSB)

    Questo driver può sospendere in modo selettivo i dispositivi (D3) per impostazione predefinita in Windows Vista e nei sistemi operativi successivi.

  • WWAN: 3G o WiMax Dongles

    Questo driver può sospendere in modo selettivo i dispositivi. Quando è presente una sottoscrizione attiva, il dispositivo entra in D2, senza una sottoscrizione attiva, il dispositivo entra in D3.

Perché non è possibile svegliare Windows da S3?

Un dispositivo USB non può svegliare Windows da S3 per diversi motivi, tra cui quanto segue:

  1. BIOS non corretto.

    Verificare che il BIOS più recente sia installato nel computer. Per ottenere la revisione BIOS più recente per il computer, visitare il sito Web dell'OEM o ODM.

  2. BIOS non abilitato per la riattivazione.

    Alcune BIOS consentono di disabilitare la riattivazione da S3 e S4. Verificare che il BIOS sia abilitato per la riattivazione da S3.

  3. Chiave del Registro di sistema USBBIOSx non impostata.

    Un'installazione pulita di Windows XP non ha la chiave del Registro di sistema USBBIOSx. Se l'OEM o ODM convalida che il BIOS possa riattivarsi da S3, impostare questa chiave del Registro di sistema su 0x00 e riavviare il computer.

  4. Il controller host non ha potenza in S3 o S4.

    Molte volte il PC taglia l'alimentazione a una scheda del componente aggiuntivo quando il PC è in uno stato di alimentazione inferiore. Se il componente aggiuntivo non ha alcuna potenza, non sarà in grado di rilevare un evento di riattivazione e non sarà in grado di riattivare il PC.

Per altre informazioni, vedere lo strumento di risoluzione dei problemi USB nella Guida e nel Centro supporto in Windows XP e versioni successive di Windows.

È necessario installare i driver per il controller host USB 2.0 avanzato?

Le versioni seguenti di Windows supportano il controller host avanzato USB 2.0:

  • Windows Vista e versioni successive
  • Windows Server 2003 e versioni successive
  • Windows XP Service Pack 1
  • Windows 2000 Service Pack 4

Nota Poiché Windows 2000 e Windows XP sono stati rilasciati prima della disponibilità dell'hardware USB 2.0, i driver sono stati rilasciati per tali sistemi operativi nei Service Pack. Per installare i driver:

  1. Seguire la procedura descritta nella risposta alla prima domanda per verificare che il computer abbia porte USB 2.0 e che sia necessario installare un driver per il controller host avanzato.

  2. Nella finestra Gestione dispositivi espandere la sezione Altri dispositivi come illustrato nella prima domanda e quindi fare doppio clic su Controller USB (Universal Serial Bus).

  3. Nella scheda Generale della finestra di dialogo Proprietà selezionare Reinstalla driver.

    reinstallare il driver

  4. Nella Procedura guidata Aggiungi nuovo hardware selezionare Installa automaticamente il software (Consigliato) e quindi selezionare Avanti. Continuare con la procedura guidata, accettando tutte le opzioni predefinite, fino a raggiungere l'ultima pagina della procedura guidata e quindi selezionare Fine. Potrebbe essere necessario riavviare il computer per completare l'installazione.

Nota Per assicurarsi di avere gli aggiornamenti più recenti installati nel computer, visitare regolarmente Windows Update.

È possibile disabilitare l'avviso "DISPOSITIVO USB HI-SPEED collegato alla porta USB non HI-SPEED"

Windows XP e versioni successive di Windows creano un avviso popup quando un dispositivo USB Hi-Speed viene collegato a una porta USB che non supporta la velocità elevata. Per ottenere le prestazioni più veloci dal dispositivo, gli utenti devono selezionare l'avviso e seguire le istruzioni sullo schermo.

Per disabilitare l'avviso, seguire questa procedura:

  1. Iniziare Gestione dispositivi, come descritto nella prima domanda in questa domande frequenti.
  2. Nella finestra Gestione dispositivi espandere il nodo controller del bus seriale universale. Cercare un controller host con la parola "Universal" o "Open" nel titolo. Se ne trovi uno, fai doppio clic su di esso.
  3. Nella scheda Avanzate della finestra di dialogo Proprietà selezionare Non segnalare errori USB.

Nota La procedura precedente disabilita tutte le notifiche USB, non solo "dispositivo USB HI-SPEED collegato alla porta non HI-SPEED".

L'hub USB 2.0 è single-TT o multi-TT?

Un hub USB 2.0 può avere un traduttore delle transazioni (TT) per tutte le porte con connessione downstream sull'hub (single TT) oppure può avere una TT per ogni porta verso il basso nell'hub (più TT).

Il valore del campo bDeviceProtocol del descrittore del dispositivo USB e del campo bInterfaceProtocol del descrittore dell'interfaccia USB indica se un hub è single-TT o multi-TT:

  • Single-TT. bDeviceProtocol == 0x01
  • Multi-TT. bDeviceProtocol == 0x02

Usbhub.sys usa questa impostazione per abilitare la modalità multi-TT o la modalità Single-TT. In Windows XP e versioni successive, Usbhub.sys abilita sempre la modalità multi-TT in un hub multi-TT. Per altre informazioni sul layout TT, vedere le sezioni 11.14.1.3 e 11.23.1 della specifica USB 2.0.

Quali caratteri o byte sono validi in un numero di serie USB?

Il campo iSerialNumber del dispositivo USB indica se il dispositivo ha un numero di serie e dove è archiviato il numero, come indicato di seguito:

  • iSerialNumber == 0x00 : il dispositivo USB non ha alcun numero di serie.
  • iSerialNumber != 0x00 : il dispositivo USB ha un numero di serie. Il valore assegnato a iSerialNumber è l'indice stringa del numero di serie.

Se il dispositivo ha un numero di serie, il numero di serie deve identificare in modo univoco ogni istanza dello stesso dispositivo.

Ad esempio, se due descrittori del dispositivo hanno valori identici per icampi i dVendor, idProduct e bcdDevice , il campo iSerialNumber deve essere diverso, per distinguere un dispositivo dall'altro.

Plug and Play richiede che ogni byte in un numero di serie USB sia valido. Se un singolo byte non è valido, Windows elimina il numero di serie e considera il dispositivo come se non avesse un numero di serie. I valori di byte seguenti non sono validi per i numeri di serie USB:

  • 0x2C.
  • Valori inferiori a 0x20.
  • Valori maggiori di 0x7F.

Per altri dettagli sul valore iSerialNumber , vedere la sezione 9.6.1 della specifica USB 2.0.

Quale LANGID viene usato in una richiesta di stringa nelle build localizzate di Windows?

Un dispositivo USB indica la presenza di un numero di serie impostando il campo iSerialNumber del descrittore del dispositivo USB sull'indice stringa del numero di serie. Per recuperare il numero di serie, Windows invia una richiesta di stringa con l'identificatore di lingua (LANGID) impostato su 0x0409 (inglese degli Stati Uniti). Windows usa sempre questo LANGID per recuperare i numeri di serie USB, anche per le versioni di Windows localizzate per altre lingue.

Quale LANGID viene usato per estrarre il numero di serie di un dispositivo?

Un dispositivo USB indica la presenza di un numero di serie impostando il campo iSerialNumber del descrittore del dispositivo USB sull'indice stringa del numero di serie. Per recuperare il numero di serie, Windows invia una richiesta di stringa con l'identificatore di lingua (LANGID) impostato su 0x0409 (inglese degli Stati Uniti). Windows usa sempre questo LANGID per recuperare i numeri di serie USB, anche per le versioni di Windows localizzate per altre lingue.

Come devono essere assegnati numeri a più interfacce in un dispositivo composito?

Windows considera i dispositivi USB con più interfacce nella prima configurazione come dispositivi compositi.

Per Windows XP Service Pack 1 e versioni precedenti di Windows:

  • I numeri di interfaccia devono essere in base zero.
  • I numeri di interfaccia devono essere consecutivi e crescenti.

Per Windows XP Service Pack 2 e versioni successive di Windows, è necessario aumentare solo i numeri di interfaccia, non consecutivi.

Le impostazioni alternative per un'interfaccia devono essere assegnate come segue per tutte le versioni di Windows:

  • Il valore predefinito per un'interfaccia è sempre l'impostazione zero alternativa.
  • I numeri di impostazione alternativa aggiuntivi devono essere consecutivi e crescenti.

Per altre informazioni sulle impostazioni alternative, vedere la sezione 9.6.5 della specifica USB 2.0.

Quali sono le principali restrizioni imposte da Usbccgp.sys?

Usbccgp.sys supporta i dispositivi compositi per:

  • Windows Me
  • Windows XP
  • Windows Server 2003
  • Windows Vista
  • Windows Server 2008

Anche se potrebbe comunque essere possibile caricare Usbhub.sys come driver padre per il dispositivo composito in queste e versioni successive di Windows, Microsoft non lo consiglia perché potrebbe causare errori di compatibilità hardware. È invece consigliabile usare Usbccgp.sys .

Per assicurarsi di caricare il driver corretto per il dispositivo composito, usare le direttive Include e Needs nei file INF, come indicato di seguito:

Include = USB.INF
Needs = Composite.Dev

Le principali restrizioni imposte su dispositivi hardware e driver da Usbccgp.sys sono le seguenti:

  • Usbccgp supporta solo la configurazione predefinita, la configurazione 0.

  • Usbccgp non supporta la sospensione selettiva in Windows XP e Windows Server 2003. Questa funzionalità è supportata solo in Windows Vista e versioni successive di Windows. Nota Usbccgp supporta la sospensione selettiva in Windows XP SP1 e versioni successive di Windows XP, ma con funzionalità limitate. Per queste versioni di Windows, il dispositivo composito viene inserito in Sospensione selettiva solo se ogni funzione figlio del dispositivo ha un IRP inattivo in sospeso. Usbccgp non supporta la sospensione selettiva in Windows XP RTM

  • Usbccgp supporta il descrittore di associazione dell'interfaccia (IAD) solo in Windows XP SP2, Windows Server 2003 SP1 e versioni successive di Windows.

  • Usbccgp supporta numeri di interfaccia non non conformi solo in Windows XP SP2, Windows Server 2003 SP1 e versioni successive di Windows.

Ricerca per categorie abilitare la traccia di debug per i file binari core USB?

Windows supporta i descrittori di associazione dell'interfaccia?

Sì. Usb 2.0 Interface Association Descriptor (IAD) Engineering Change Notification (ECN) ha introdotto un nuovo metodo standard per descrivere un raggruppamento di interfacce e le relative impostazioni alternative all'interno di una funzione. IAD può essere usato per identificare due o più interfacce consecutive e impostazioni alternative all'interno di una funzione.

Microsoft sta attualmente lavorando con IHD per sviluppare dispositivi che supportano IAD. I sistemi operativi seguenti supportano IAD:

  • Windows XP Service Pack 2 e versioni successive
  • Windows Server 2003 Service Pack 1 e versioni successive
  • Windows Vista

Lo stack USB gestisce gli ELENCHI MDL concatenati in un'intune?

Questa funzionalità è supportata dallo stack di driver USB 3.0 incluso in Windows.

Un conducente può avere più di un OGGETTO IN un IRP?

No. Questa funzionalità non è supportata dallo stack USB incluso in Windows.

Windows supporta hub compositi USB?

Un dispositivo USB composito, detto anche dispositivo USB multifunzione, espone più funzioni, ognuna delle quali può essere considerata come un dispositivo indipendente. Il sistema carica il driver padre generico USB, Usbccgp.sys, per fungere da driver padre per le funzioni del dispositivo. Il driver padre generico USB enumera le funzioni del dispositivo composito come se fossero dispositivi USB separati e quindi crea un PDO e costruisce uno stack di dispositivi per ogni funzione.

Un dispositivo USB composito non può esporre una funzione che funge da hub. Windows non enumera correttamente tali hub e tenta di installare il dispositivo potrebbe causare un arresto anomalo del sistema.