Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Questo articolo descrive il supporto nel sistema operativo Windows per lo sviluppo di un driver controller host USB (Universal Serial Bus) che comunica con l'estensione del controller host USB (UCX) fornita da Microsoft.
Se si sviluppa un controller host xHCI non conforme alla specifica o si sviluppa un hardware non xHCI personalizzato (ad esempio un controller host virtuale), è possibile scrivere un driver del controller host che comunica con UCX. Si consideri, ad esempio, un dock wireless che supporta i dispositivi USB. Il PC comunica con i dispositivi USB tramite il dock wireless utilizzando il protocollo USB su TCP come protocollo di trasporto.
Estensione del controller host USB (UCX)
L'estensione del controller host USB è un driver fornito dal sistema (Ucx01000.sys). Questo driver viene implementato come estensione della classe framework usando le interfacce di programmazione di Windows Driver Framework . Il driver del controller host funge da driver client per tale estensione di classe. Mentre un driver del controller host gestisce operazioni ed eventi hardware, risparmio energia ed eventi PnP, UCX funge da interfaccia astratta che accoda le richieste al driver del controller host ed esegue altre attività.
UCX è uno dei driver host USB per Windows. Viene caricato come FDO nello stack di dispositivi del controller host.
Driver del controller host USB
UCX è estendibile ed è progettato per supportare vari driver del controller host. Windows fornisce un driver xHCI (Usbxhci.sys) destinato ai controller host xHCI USB.
Il driver del controller host è un client di UCX, scritto come driverKernel-Mode Driver Framework (KMDF).
File binari forniti da Microsoft
Per scrivere un driver del controller host, sono necessari UCX (Ucx01000.sys) e la libreria stub (Ucx01000.lib). La libreria stub è disponibile in Windows Driver Kit (WDK). La libreria esegue due funzioni principali.
- Tradurre le chiamate effettuate dal driver del controller host e passarle a UCX.
- Fornisce il supporto per il controllo delle versioni. Un driver del controller host funzionerà con UCX, solo se UCX ha lo stesso numero di versione principale del driver del controller host e lo stesso numero di versione secondaria o superiore del driver del controller host.
Strumenti di sviluppo
WdK contiene risorse necessarie per lo sviluppo di driver, ad esempio intestazioni, librerie, strumenti ed esempi.
Scaricare kit e strumenti per Windows
Inizia subito
Leggere la specifica ufficiale che descrive il comportamento previsto di diversi componenti (dispositivo, controller host e hub) dell'architettura.
xHCI per il bus seriale universale: specifica
Documenti ufficiali del bus seriale universale
Comprendere l'architettura di UCX
Acquisire familiarità con lo stack di driver USB fornito da Microsoft:
Driver lato host USB in Windows
Architettura: estensione del controller host USB (UCX)
Acquisire familiarità con gli oggetti UCX e gli handle
UCX estende la funzionalità dell'oggetto WDF per definire i propri oggetti UCX specifici per USB. Per altri dettagli sugli oggetti WDF, vedere Introduzione agli oggetti Framework.
Per accodare le richieste a qualsiasi driver del controller host sottostante, UCX usa questi oggetti. Per ulteriori informazioni, vedere Oggetti UCX e handle usati da un driver del controller host.
| Oggetto UCX | Descrizione |
|---|---|
| Oggetto host controller (UCXCONTROLLER) | Rappresenta il controller host creato dal driver del controller host. Il driver deve creare un solo oggetto controller host per ogni istanza del controller host. In genere creato all'interno del callback EVT_WDF_DRIVER_DEVICE_ADD chiamando il metodo UcxControllerCreate . |
| Oggetto hub principale (UCXROOTHUB) | Ottiene e controlla lo stato delle porte radice del controller host. Creato dal driver del controller host in genere all'interno del callback EVT_WDF_DRIVER_DEVICE_ADD chiamando il metodo UcxRootHubCreate . |
| Oggetto dispositivo USB (UCXUSBDEVICE) | Rappresenta un dispositivo USB fisico connesso al bus. Creato dal driver del controller host in genere all'interno del callback EVT_UCX_CONTROLLER_USBDEVICE_ADD chiamando il metodo **UcxUsbDeviceCreate . |
| Oggetto Endpoint (UCXENDPOINT) | Rappresenta un endpoint in un oggetto dispositivo USB. Creato in genere dal driver del controller host all'interno del callback EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD o EVT_UCX_USBDEVICE_ENDPOINT_ADD chiamando il metodo **UcxEndpointCreate. |
| Oggetto Stream (UCXSTREAMS) | Rappresenta un numero di canali verso il dispositivo attraverso un unico endpoint bulk. Creato dal driver del controller host in genere all'interno del callback EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD chiamando il metodo UcxStaticStreamsCreate . |
Sezioni della documentazione
Funzioni di callback dell'hub principale di un driver del controller host
UCX gestisce la maggior parte delle operazioni correlate all'hub radice. In questo modo il driver dell'hub USB può interagire con l'hub radice nello stesso modo in cui interagisce con un hub normale. Il driver del controller host può registrare le funzioni di callback.
Gestire le richieste di I/O in un driver del controller host USB
UCX valuta i blocchi di richieste USB in ingresso (URB) e quindi li inoltra alla coda dell'endpoint corretta.
Configurare gli endpoint USB in un driver del controller host
Il driver del controller host svolge un ruolo nella gestione delle code da parte di UCX, associate ai suoi endpoint, e nella programmazione degli endpoint nell'hardware del controller.
Informazioni di riferimento sulle estensioni del controller host USB (UCX)
Fornisce specifiche per le richieste di I/O, le routine di supporto, le strutture e le interfacce usate dal driver client. Tali routine e strutture di dati correlate sono definite nelle intestazioni WDK.
In italiano, UCX è definito come un'estensione della classe framework.
Il driver del controller host viene definito driver client.