Blocchi di richiesta USB (URB)

Questo articolo descrive un blocco di richieste USB e fornisce informazioni su come un driver client USB può usare routine DI Windows Driver Model (WDM) per allocare, compilare e inviare URL allo stack di driver USB.

Un driver client universal serial bus (USB) non può comunicare direttamente con il dispositivo. Il driver client crea invece richieste e li invia allo stack di driver USB per l'elaborazione. All'interno di ogni richiesta, il driver client fornisce una struttura di dati a lunghezza variabile denominata BLOCCO richiesta USB (URB). La struttura URB descrive i dettagli della richiesta e contiene anche informazioni sullo stato della richiesta completata. Il driver client esegue tutte le operazioni specifiche del dispositivo, inclusi i trasferimenti di dati, tramite GLI URL. Il driver client deve inizializzare IL CLIENT con informazioni sulla richiesta prima di inviarlo allo stack di driver USB. Per determinati tipi di richieste, Microsoft fornisce routine di helper e macro che allocano una struttura URB e riempiano i membri necessari della struttura DI ASSEGNAZIONE con i dettagli forniti dal driver client.

Ogni CITTÀ inizia con un'intestazione di dimensioni fisse standard (_URB_HEADER) il cui scopo è identificare il tipo di operazione richiesto. Il membro Length di _URB_HEADER specifica le dimensioni, in byte, dell'ENTITÀ. Il membro funzione , che deve essere una serie di costanti URB_FUNCTION_XXX definite dal sistema, determina il tipo di operazione richiesto. Nel caso dei trasferimenti di dati, ad esempio, questo membro indica il tipo di trasferimento. I codici di funzione URB_FUNCTION_CONTROL_TRANSFER, URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER e URB_FUNCTION_ISOCH_TRANSFER indicano rispettivamente controllo, bulk/interrupt e trasferimenti isochronous. Lo stack di driver USB usa il membro Status per restituire un codice di stato specifico USB.

Per inviare un'istanza DI, il driver client usa la richiesta di IOCTL_INTERNAL_USB_SUBMIT_URB , che viene recapitata al dispositivo tramite un pacchetto di richiesta I/O (IRP) di tipo IRP_MJ_INTERNAL_DEVICE_CONTROL.

Dopo aver eseguito l'elaborazione dello stack di driver USB, lo stack di driver usa il membro Statusdella struttura URB per restituire un codice di stato specifico usb.

Nota

Gli sviluppatori di driver kmDF e UMDF devono usare le rispettive interfacce del framework per comunicare con un dispositivo USB. Per altre informazioni, vedere Uso dei dispositivi USB per i driver KMDF e Uso delle interfacce USB in UMDF. Questi argomenti illustrano le interfacce dei driver WDM sottostanti usate per la comunicazione dei dispositivi USB.

Contenuto della sezione

Argomento Descrizione
Allocazione e compilazione di URB In questo argomento viene descritto come un driver client USB può usare routine di driver Windows Driver Model (WDM) per allocare e formattare un'ISTANZA prima di inviare la richiesta allo stack di driver USB fornito da Microsoft.
Come inviare UN'istanza DI In questo argomento vengono descritti i passaggi necessari per inviare un'istanza di URB inizializzata allo stack di driver USB per elaborare una richiesta specifica.
Procedure consigliate: uso di URB In questo argomento vengono descritte le procedure consigliate per un driver client per l'allocazione, la compilazione e l'invio di un'ISTANZA allo stack di driver USB incluso con Windows 8.