Condividi tramite


Panoramica dello sviluppo di driver Windows per i controller host USB

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.