Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Per alcuni dispositivi USB (Universal Serial Bus), è possibile installare WinUSB (Winusb.sys) anziché implementare un driver.
Importante
Questo articolo è destinato ai programmatori. Se sei un cliente che sta riscontrando problemi con USB, consulta Risolvere i problemi di USB-C in Windows
Installazione automatica di WinUSB senza un file INF
Come produttore OEM o fornitore di hardware indipendente (IHV), è possibile configurare il dispositivo in modo che il Winusb.sys venga installato automaticamente. Un dispositivo di questo tipo è denominato dispositivo WinUSB e non richiede la scrittura di un file INF personalizzato che fa riferimento a Winusb.inf.
Quando si connette un dispositivo WinUSB, Windows legge automaticamente le informazioni sul dispositivo e carica Winusb.sys automaticamente.
Per altre informazioni, vedere Dispositivo WinUSB.
Installazione di WinUSB specificando la classe di dispositivo fornita dal sistema
Quando si connette il dispositivo, è possibile notare che Windows carica automaticamente Winusb.sys . In caso contrario, seguire queste istruzioni per caricare il driver:
- Collegare il dispositivo al sistema host.
- Aprire Gestione dispositivi e individuare il dispositivo.
- Fare clic con il pulsante destro del mouse sul dispositivo e scegliere Aggiorna driver... dal menu contestuale.
- Nella procedura guidata selezionare Cerca nel computer il software del driver.
- Selezionare Let me pick from a list of device drivers on my computer (Consenti selezione da un elenco di driver di dispositivo nel computer).
- Nell'elenco delle classi di dispositivi selezionare Dispositivi bus seriali universali.
- La procedura guidata visualizza WinUsb Device. Selezionarlo per caricare il driver.
Se i dispositivi del bus seriale universale non vengono visualizzati nell'elenco delle classi di dispositivi, è necessario installare il driver usando un INF personalizzato. La procedura precedente non aggiunge un GUID dell'interfaccia dispositivo per un'app (app UWP o app desktop di Windows) per accedere al dispositivo. È necessario aggiungere manualmente il GUID seguendo questa procedura.
Caricare il driver come descritto nella procedura precedente.
Generare un GUID dell'interfaccia dispositivo per il dispositivo usando uno strumento come guidgen.exe.
Trovare la chiave del Registro di sistema per il dispositivo sotto questa chiave.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\<VID_vvvv&PID_pppp>
Nella chiave Device Parameters aggiungere una voce del Registro di sistema String denominata DeviceInterfaceGUID o una voce a più stringhe denominata DeviceInterfaceGUIDs. Impostare il valore sul GUID generato nel passaggio 2.
Disconnettere il dispositivo dal sistema e riconnetterlo alla stessa porta fisica.
Nota
Se si modifica la porta fisica, è necessario ripetere i passaggi da 1 a 4.
Scrittura di un INF personalizzato per l'installazione di WinUSB
Come parte del pacchetto driver, fornisci un file inf che installa Winusb.sys come driver di funzione per il dispositivo USB.
Ecco un esempio di file INF universale valido per le piattaforme x64 e ARM64 che eseguono Windows 10 o versione successiva. Questo esempio non include i coinstallatori, rendendolo idoneo per la firma tramite il portale Hardware Developer Center Dashboard.
;
; Universal INF file for WinUsb installation
;
[Version]
Signature = "$Windows NT$"
Class = USBDevice
ClassGUID = {88BAE032-5A81-49f0-BC3D-A4FF138216D6}
Provider = %ManufacturerName%
CatalogFile = WinUSBInstallation.cat
DriverVer = 09/04/2012,13.54.20.543
PnpLockdown = 1
; ========== Manufacturer and Models sections ===========
[Manufacturer]
%ManufacturerName% = Standard,NTamd64,NTarm64
[Standard.NTamd64]
%DeviceName% =USB_Install, USB\VID_0547&PID_1002
[Standard.NTarm64]
%DeviceName% =USB_Install, USB\VID_0547&PID_1002
; =================== Installation ===================
[USB_Install]
Include = winusb.inf
Needs = WINUSB.NT
[USB_Install.Services]
Include =winusb.inf
Needs = WINUSB.NT.Services
[USB_Install.HW]
AddReg=Dev_AddReg
[Dev_AddReg]
HKR,,DeviceInterfaceGUIDs,0x10000,"{9f543223-cede-4fa3-b376-a25ce9a30e74}"
; =================== Strings ===================
[Strings]
ManufacturerName="Contoso"
ClassName="Universal Serial Bus devices"
DeviceName="Fx2 Learning Kit Device"
REG_MULTI_SZ = 0x00010000
Questo file INF universale può essere usato in più piattaforme Windows (x64 e ARM64) ed è idoneo per essere firmato dal portale del dashboard di Hardware Developer Center .
Per installare solo una nuova classe di installazione del dispositivo personalizzata, includere una sezione ClassInstall32 in un file INF del dispositivo. I file INF per i dispositivi in una classe installata, indipendentemente dal fatto che una classe di installazione del dispositivo fornita dal sistema o una classe personalizzata, non includano una sezione ClassInstall32.
Ad eccezione dei valori specifici del dispositivo e di diversi problemi indicati nell'elenco seguente, è possibile usare queste sezioni e direttive per installare WinUSB per qualsiasi dispositivo USB. Queste voci di elenco descrivono gli Includes e le Direttive nel file .inf precedente.
USB_Install: le direttive Include e Needs nella sezione USB_Install sono necessarie per l'installazione di WinUSB. Non è consigliabile modificare queste direttive.
USB_Install.Services: la direttiva Include nella sezione USB_Install.Services include il file inf fornito dal sistema per WinUSB (Winusb.inf). Windows installa questo file inf se non è già presente nel sistema di destinazione. La direttiva Needs specifica la sezione all'interno di Winusb.inf che contiene informazioni necessarie per installare Winusb.sys come driver di funzione del dispositivo. Non è consigliabile modificare queste direttive.
USB_Install.HW: questa sezione è la chiave nel file inf. Specifica l'identificatore univoco globale dell'interfaccia del dispositivo (GUID) per il dispositivo. La direttiva AddReg imposta il GUID dell'interfaccia specificato in un valore del Registro di sistema standard. Quando Winusb.sys viene caricato come driver di funzione del dispositivo, legge il valore del Registro di sistema DeviceInterfaceGUIDs e usa il GUID specificato per rappresentare l'interfaccia del dispositivo. È consigliabile sostituire il GUID in questo esempio con quello creato in modo specifico per il dispositivo. Se i protocolli per il dispositivo cambiano, creare un nuovo GUID dell'interfaccia del dispositivo.
Nota
Il software in modalità utente deve chiamare SetupDiGetClassDevs per enumerare le interfacce del dispositivo registrate associate a una delle classi di interfaccia dispositivo specificate nella chiave DeviceInterfaceGUIDs. SetupDiGetClassDevs restituisce l'handle del dispositivo per il dispositivo che il software in modalità utente deve quindi passare alla routine WinUsb_Initialize per ottenere un handle WinUSB per l'interfaccia del dispositivo. Per ulteriori informazioni su queste routine, consulta Come accedere a un dispositivo USB utilizzando le funzioni WinUSB.
Ogni volta che Winusb.sys viene caricata, registra un'interfaccia del dispositivo con le classi di interfaccia del dispositivo specificate nel Registro di sistema nella chiave DeviceInterfaceGUIDs .
HKR,,DeviceInterfaceGUIDs, 0x10000,"{D696BFEB-1734-417d-8A04-86D01071C512}"
Come creare un pacchetto driver che installa Winusb.sys
Per usare WinUSB come driver di funzione del dispositivo, si crea un pacchetto driver. Ecco i passaggi per creare un pacchetto driver che installa Winusb.sys:
Scaricare Windows Driver Kit (WDK) e installarlo nel computer.
Creare una cartella del pacchetto driver nel sistema in cui il dispositivo USB è connesso, ad esempio C:\UsbDevice.
Scrivere un file inf che installa Winusb.sys come driver di funzione per il dispositivo USB e salvarlo nella cartella del pacchetto driver. Un esempio di come scrivere questo file è disponibile nella sezione Scrittura di un INF personalizzato per l'installazione winUSB di questo documento.
Creare un file di catalogo firmato per il pacchetto. Questo file è necessario per installare WinUSB in Windows. Per altre informazioni su come creare e testare i file di catalogo firmati, vedere Kernel-Mode procedura dettagliata per la firma del codice nel sito Windows Dev Center - Hardware.
Connettere il dispositivo USB al computer.
Aprire Gestione dispositivi nel computer. Seguire le istruzioni della procedura guidata Aggiornamento driver e scegliere l'installazione manuale. Quando richiesto, specificare il percorso della cartella del pacchetto driver per completare l'installazione.