_URB_HEADER struttura (usb.h)
La struttura _URB_HEADER viene usata dai driver client USB per fornire informazioni di base sulla richiesta inviata al driver del controller host.
Sintassi
struct _URB_HEADER {
USHORT Length;
USHORT Function;
USBD_STATUS Status;
PVOID UsbdDeviceHandle;
ULONG UsbdFlags;
};
Members
Length
Specifica la lunghezza, espressa in byte, dell'OGGETTO URB. Per le richieste DI DIMENSION che usano strutture di dati diverse da _URB_HEADER, questo membro deve essere impostato sulla lunghezza dell'intera struttura di richiesta URB, non sulla dimensione _URB_HEADER.
Function
Specifica un codice numerico che indica l'operazione richiesta per questo VALORE DI. Uno dei valori seguenti deve essere impostato:
URB_FUNCTION_SELECT_CONFIGURATION
Indica al driver del controller host che deve essere selezionata una configurazione. Se impostato, viene usato CON URB_SELECT_CONFIGURATION come struttura dei dati.
URB_FUNCTION_SELECT_INTERFACE
Indica al driver del controller host che viene selezionata un'impostazione di interfaccia alternativa per un'interfaccia. Se impostato, viene usato l'CUBO con _URB_SELECT_INTERFACE come struttura dei dati.
URB_FUNCTION_ABORT_PIPE
Indica che tutte le richieste in sospeso per una pipe devono essere annullate. Se impostato, viene usato l'CUBO con _URB_PIPE_REQUEST come struttura dei dati. Questa richiesta per utilizzo generico consente a un client di annullare eventuali trasferimenti in sospeso per la pipe specificata. Lo stato della pipe e lo stato dell'endpoint non sono interessati. La richiesta di interruzione potrebbe essere completata prima del completamento di tutte le richieste in sospeso. Non presupporre che il completamento della richiesta di interruzione implica che tutte le altre richieste in sospeso siano state completate.
URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL
Questa funzione IDENTITY è deprecata nei sistemi operativi Windows 2000 e versioni successive e non è supportata da Microsoft. Non usare. Se si specifica questa funzione con una richiesta URB, la richiesta avrà esito negativo e il sistema segnala un errore.
URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL
Questa funzione IDENTITY è deprecata nei sistemi operativi Windows 2000 e versioni successive e non è supportata da Microsoft. Non usare. Se si specifica questa funzione con una richiesta URB, la richiesta avrà esito negativo e il sistema segnala un errore.
URB_FUNCTION_GET_FRAME_LENGTH
Questa funzione IDENTITY è deprecata nei sistemi operativi Windows 2000 e versioni successive e non è supportata da Microsoft. Non usare. Se si usa questa funzione con una richiesta URB, la richiesta avrà esito negativo e il sistema segnala un errore.
URB_FUNCTION_SET_FRAME_LENGTH
Questa funzione IDENTITY è deprecata nei sistemi operativi Windows 2000 e versioni successive e non è supportata da Microsoft. Non usare. Se lo si usa con una richiesta URB, la richiesta avrà esito negativo e il sistema segnala un errore.
URB_FUNCTION_GET_CURRENT_FRAME_NUMBER
Richiede il numero di frame corrente dal driver del controller host. Se impostato, viene usato l'CUBO con _URB_GET_CURRENT_FRAME_NUMBER come struttura dei dati.
URB_FUNCTION_CONTROL_TRANSFER
Trasferisce i dati a o da una pipe di controllo. Se impostato, viene usato CON _URB_CONTROL_TRANSFER come struttura dei dati.
URB_FUNCTION_CONTROL_TRANSFER_EX
Trasferisce i dati a o da una pipe di controllo senza un limite di tempo specificato da un valore di timeout. Se impostato, viene usato CON URB_CONTROL_TRANSFER_EX come struttura dei dati.
Disponibile in Windows Vista e nei sistemi operativi successivi.
URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER
Trasferisce i dati da una pipe bulk o da una pipe di interruzione o da una pipe bulk. Se impostato, viene usato l'CUBO con _URB_BULK_OR_INTERRUPT_TRANSFER come struttura dei dati.
URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER_USING_CHAINED_MDL
Trasferisce i dati da e verso una pipe bulk o da una pipe di interruzione, usando mdls concatenati. Se impostato, viene usato l'CUBO con _URB_BULK_OR_INTERRUPT_TRANSFER come struttura dei dati. Il driver client deve impostare il membro TransferBufferMDL sulla prima struttura MDL della catena contenente il buffer di trasferimento. Lo stack di driver USB ignora il membro TransferBuffer durante l'elaborazione di QUESTA FUNZIONE.
Disponibile in Windows 8. Per informazioni sull'uso di MDLs concatenati, vedere How to Send Chained MDLs">How to Send Chained MDLs (Come inviare MDL con catena).
URB_FUNCTION_ISOCH_TRANSFER
Trasferisce dati a o da una pipe isochronous. Se impostato, viene usato l'CUBO con _URB_ISOCH_TRANSFER come struttura dei dati.
URB_FUNCTION_ISOCH_TRANSFER_USING_CHAINED_MDL
Trasferisce i dati a o da una pipe isochronous usando mdls concatenati. Se impostato, viene usato l'CUBO con _URB_ISOCH_TRANSFER come struttura dei dati. Il driver client deve impostare il membro TransferBufferMDL sul primo MDL della catena contenente il buffer di trasferimento. Lo stack di driver USB ignora il membro TransferBuffer durante l'elaborazione di QUESTA FUNZIONE.
Disponibile in Windows 8. Per informazioni sull'uso di MDLs concatenati, vedere How to Send Chained MDLs">How to Send Chained MDLs (Come inviare MDL con catena).
URB_FUNCTION_RESET_PIPE
Vedere URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL.
URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL
Reimposta la pipe indicata. Se impostato, viene usato QUESTO VALORE con _URB_PIPE_REQUEST.
Nota
QUESTO VALORE VIENE sostituito da URB_FUNCTION_RESET_PIPE.
Il conducente del bus esegue tre attività in risposta a questo PROBLEMA:
Prima di tutto, per tutte le pipe ad eccezione di pipe isochronous, questo URB invia una richiesta di CLEAR_FEATURE per cancellare la funzionalità di ENDPOINT_HALT del dispositivo.
In secondo luogo, il driver del bus USB reimposta l'interruttore dei dati sul lato host, come richiesto dalla specifica USB. Il dispositivo USB deve reimpostare l'interruttore dei dati sul lato dispositivo quando il driver del bus cancella la sua funzionalità di ENDPOINT_HALT. Poiché alcuni dispositivi non conformi non supportano questa funzionalità, Microsoft fornisce i due URL aggiuntivi: URB_FUNCTION_SYNC_CLEAR_STALL e URB_FUNCTION_SYNC_RESET_PIPE. Questi consentono ai driver client di cancellare la funzionalità di ENDPOINT_HALT nel dispositivo o reimpostare rispettivamente la pipe sul lato host, senza influire sull'interruttore dei dati sul lato host. Se il dispositivo non reimposta l'interruttore dei dati quando deve, il driver client può compensare questo difetto non reimpostando l'interruttore dei dati lato host. Se l'interruttore dei dati viene reimpostato sul lato host, ma non sul lato dispositivo, i pacchetti usciranno dalla sequenza e il dispositivo potrebbe eliminare i pacchetti.
In terzo luogo, dopo che il conducente del bus ha ripristinato correttamente la pipe, riprende i trasferimenti con il successivo NUM in coda.
Dopo la reimpostazione della pipe, i trasferimenti riprendono con il successivo VALORE IN coda.
Non è necessario cancellare una condizione di arresto in una pipe di controllo predefinita. La pipe di controllo predefinita deve sempre accettare pacchetti di configurazione e quindi, se si arresta, lo stack USB cancella automaticamente la condizione di arresto. Il driver client non deve eseguire alcuna azione speciale per cancellare la condizione di arresto in una pipe predefinita.
Tutti i trasferimenti devono essere interrotti o annullati prima di tentare di reimpostare la pipe.
Deve essere inviato a PASSIVE_LEVEL.
URB_FUNCTION_SYNC_RESET_PIPE
Cancella la condizione di arresto sul lato host di una pipe. Se impostato, viene usato QUESTO VALORE con _URB_PIPE_REQUEST come struttura dei dati.
QUESTO VALORE CONSENTE a un client di cancellare lo stato interrotto di una pipe senza reimpostare l'interruttore dei dati e senza cancellare la condizione di stallo dell'endpoint (funzionalità ENDPOINT_HALT). Per cancellare una condizione di arresto sulla pipe, reimpostare l'interruttore dei dati sul lato host e cancellare uno stallo sul dispositivo con una singola operazione, usare URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL.
I codici di stato seguenti sono importanti e hanno il significato indicato:
USBD_STATUS_INVALID_PIPE_HANDLE
PipeHandle non è valido
USBD_STATUS_ERROR_BUSY
L'endpoint ha trasferimenti attivi in sospeso.
Non è necessario cancellare una condizione di arresto in una pipe di controllo predefinita. La pipe di controllo predefinita deve sempre accettare pacchetti di configurazione e quindi, se si arresta, lo stack USB cancella automaticamente la condizione di arresto. Il driver client non deve eseguire alcuna azione speciale per cancellare la condizione di arresto in una pipe predefinita.
Tutti i trasferimenti devono essere interrotti o annullati prima di tentare di reimpostare la pipe.
Deve essere inviato a PASSIVE_LEVEL.
Disponibile in Windows XP e nei sistemi operativi successivi.
URB_FUNCTION_SYNC_CLEAR_STALL
Cancella la condizione di stallo nell'endpoint. Per tutte le pipe ad eccezione di pipe isochronous, questo URB invia una richiesta di CLEAR_FEATURE per cancellare la funzionalità di ENDPOINT_HALT del dispositivo. Tuttavia, a differenza della funzione RB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL, questa funzione URB non reimposta l'interruttore dei dati sul lato host della pipe. La specifica USB richiede ai dispositivi di reimpostare l'interruttore dei dati lato dispositivo dopo che il client cancella la funzionalità di ENDPOINT_HALT del dispositivo, ma alcuni dispositivi non conformi non reimpostano correttamente i dati. I driver client che gestiscono tali dispositivi possono compensare questo difetto cancellando la condizione di stalla direttamente con URB_FUNCTION_SYNC_CLEAR_STALL anziché reimpostare la pipe con URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL. URB_FUNCTION_SYNC_CLEAR_STALL cancella una condizione di stallo nel dispositivo senza reimpostare l'interruttore dei dati sul lato host. Ciò impedisce a un dispositivo non conforme di interpretare il pacchetto successivo come ritrasmissione ed eliminare il pacchetto.
Se impostato, viene usato l'CUBO con _URB_PIPE_REQUEST come struttura dei dati.
Questa funzione URB deve essere inviata in PASSIVE_LEVEL
Disponibile in Windows XP e nei sistemi operativi successivi.
URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE
Recupera il descrittore del dispositivo da un dispositivo USB specifico. Se impostato, l'OGGETTO VIENE usato con _URB_CONTROL_DESCRIPTOR_REQUEST come struttura dei dati.
URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT
Recupera il descrittore da un endpoint in un'interfaccia per un dispositivo USB. Se impostato, l'OGGETTO VIENE usato con _URB_CONTROL_DESCRIPTOR_REQUEST come struttura dei dati.
URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE
Imposta un descrittore del dispositivo in un dispositivo. Se impostato, l'OGGETTO VIENE usato con _URB_CONTROL_DESCRIPTOR_REQUEST come struttura dei dati.
URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT
Imposta un descrittore dell'endpoint in un endpoint per un'interfaccia. Se impostato, l'OGGETTO VIENE usato con _URB_CONTROL_DESCRIPTOR_REQUEST come struttura dei dati.
URB_FUNCTION_SET_FEATURE_TO_DEVICE
Imposta una funzionalità definita da USB in un dispositivo. Se impostato, viene usato CON _URB_CONTROL_FEATURE_REQUEST come struttura dei dati.
URB_FUNCTION_SET_FEATURE_TO_INTERFACE
Imposta una funzionalità definita da USB in un'interfaccia per un dispositivo. Se impostato, viene usato CON _URB_CONTROL_FEATURE_REQUEST come struttura dei dati.
URB_FUNCTION_SET_FEATURE_TO_ENDPOINT
Imposta una funzionalità definita da USB su un endpoint per un'interfaccia in un dispositivo USB. Se impostato, viene usato CON _URB_CONTROL_FEATURE_REQUEST come struttura dei dati.
URB_FUNCTION_SET_FEATURE_TO_OTHER
Imposta una funzionalità definita da USB in una destinazione definita dal dispositivo in un dispositivo USB. Se impostato, viene usato CON _URB_CONTROL_FEATURE_REQUEST come struttura dei dati.
URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE
Cancella una funzionalità definita da USB in un dispositivo. Se impostato, viene usato CON _URB_CONTROL_FEATURE_REQUEST come struttura dei dati.
URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE
Cancella una funzionalità definita da USB in un'interfaccia per un dispositivo. Se impostato, viene usato CON _URB_CONTROL_FEATURE_REQUEST come struttura dei dati.
URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT
Cancella una funzionalità definita da USB in un endpoint, per un'interfaccia, su un dispositivo USB. Se impostato, viene usato CON _URB_CONTROL_FEATURE_REQUEST come struttura dei dati.
URB_FUNCTION_CLEAR_FEATURE_TO_OTHER
Cancella una funzionalità definita da USB in un dispositivo definito come destinazione in un dispositivo USB. Se impostato, viene usato CON _URB_CONTROL_FEATURE_REQUEST come struttura dei dati.
URB_FUNCTION_GET_STATUS_FROM_DEVICE
Recupera lo stato da un dispositivo USB. Se impostato, viene usato l'CUBO con _URB_CONTROL_GET_STATUS_REQUEST come struttura dei dati.
URB_FUNCTION_GET_STATUS_FROM_INTERFACE
Recupera lo stato da un'interfaccia in un dispositivo USB. Se impostato, viene usato l'CUBO con _URB_CONTROL_GET_STATUS_REQUEST come struttura dei dati.
URB_FUNCTION_GET_STATUS_FROM_ENDPOINT
Recupera lo stato da un endpoint per un'interfaccia in un dispositivo USB. Se impostato, viene usato l'CUBO con _URB_CONTROL_GET_STATUS_REQUEST come struttura dei dati.
URB_FUNCTION_GET_STATUS_FROM_OTHER
Recupera lo stato da una destinazione definita dal dispositivo in un dispositivo USB. Se impostato, viene usato l'CUBO con _URB_CONTROL_GET_STATUS_REQUEST come struttura dei dati.
URB_FUNCTION_VENDOR_DEVICE
Invia un comando specifico del fornitore a un dispositivo USB. Se impostato, viene usato CON _URB_CONTROL_VENDOR_OR_CLASS_REQUEST come struttura dei dati.
URB_FUNCTION_VENDOR_INTERFACE
Invia un comando specifico del fornitore per un'interfaccia in un dispositivo USB. Se impostato, viene usato CON _URB_CONTROL_VENDOR_OR_CLASS_REQUEST come struttura dei dati.
URB_FUNCTION_VENDOR_ENDPOINT
Invia un comando specifico del fornitore per un endpoint in un'interfaccia in un dispositivo USB. Se impostato, viene usato CON _URB_CONTROL_VENDOR_OR_CLASS_REQUEST come struttura dei dati.
URB_FUNCTION_VENDOR_OTHER
Invia un comando specifico del fornitore a una destinazione definita dal dispositivo in un dispositivo USB. Se impostato, viene usato CON _URB_CONTROL_VENDOR_OR_CLASS_REQUEST come struttura dei dati.
URB_FUNCTION_CLASS_DEVICE
Invia un comando specifico della classe USB a un dispositivo USB. Se impostato, viene usato CON _URB_CONTROL_VENDOR_OR_CLASS_REQUEST come struttura dei dati.
URB_FUNCTION_CLASS_INTERFACE
Invia un comando specifico della classe USB a un'interfaccia in un dispositivo USB. Se impostato, viene usato CON _URB_CONTROL_VENDOR_OR_CLASS_REQUEST come struttura dei dati.
URB_FUNCTION_CLASS_ENDPOINT
Invia un comando specifico della classe USB a un endpoint, su un'interfaccia, in un dispositivo USB. Se impostato, viene usato CON _URB_CONTROL_VENDOR_OR_CLASS_REQUEST come struttura dei dati.
URB_FUNCTION_CLASS_OTHER
Invia un comando specifico della classe USB a una destinazione definita dal dispositivo in un dispositivo USB. Se impostato, viene usato CON _URB_CONTROL_VENDOR_OR_CLASS_REQUEST come struttura dei dati.
URB_FUNCTION_GET_CONFIGURATION
Recupera la configurazione corrente in un dispositivo USB. Se impostato, viene usato CON _URB_CONTROL_GET_CONFIGURATION_REQUEST come struttura dei dati.
URB_FUNCTION_GET_INTERFACE
Recupera le impostazioni correnti per un'interfaccia in un dispositivo USB. Se impostato, viene usato CON _URB_CONTROL_GET_INTERFACE_REQUEST come struttura dei dati.
Disponibile in Windows 2000 e Windows Vista e nei sistemi operativi successivi. Non disponibile in Windows XP.
URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE
Recupera il descrittore da un'interfaccia per un dispositivo USB. Se impostato, l'OGGETTO VIENE usato con _URB_CONTROL_DESCRIPTOR_REQUEST come struttura dei dati.
URB_FUNCTION_SET_DESCRIPTOR_TO_INTERFACE
Imposta un descrittore per un'interfaccia in un dispositivo USB. Se impostato, l'OGGETTO VIENE usato con _URB_CONTROL_DESCRIPTOR_REQUEST come struttura dei dati.
URB_FUNCTION_GET_MS_FEATURE_DESCRIPTOR
Recupera un descrittore di funzionalità del sistema operativo Microsoft da un dispositivo USB o da un'interfaccia in un dispositivo USB. Se impostato, viene usato l'CUBO con _URB_OS_FEATURE_DESCRIPTOR_REQUEST come struttura dei dati.
Disponibile nei sistemi operativi Windows XP e versioni successive.
URB_FUNCTION_OPEN_STATIC_STREAMS
Apre i flussi nell'endpoint bulk specificato. Se impostato, viene usato CON _URB_OPEN_STATIC_STREAMS come struttura dei dati.
Disponibile in Windows 8. Per informazioni sulla formattazione di una richiesta di flusso aperto, vedere Come aprire e chiudere flussi statici in un endpoint bulk USB.
URB_FUNCTION_CLOSE_STATIC_STREAMS
Chiude tutti i flussi aperti nell'endpoint bulk specificato. Se impostato, viene usato l'CUBO con _URB_PIPE_REQUEST come struttura dei dati.
Disponibile in Windows 8. Per informazioni sulla formattazione di una richiesta di flusso aperto, vedere Come aprire e chiudere flussi statici in un endpoint bulk USB.
Status
Contiene un codice USBD_STATUS_XXX restituito dal driver del controller host.
UsbdDeviceHandle
Riservato. Non usare.
UsbdFlags
Riservato. Non usare.
Commenti
La struttura di _URB_HEADER è un membro di tutte le richieste USB che fanno parte della struttura URB. La struttura _URB_HEADER viene usata per fornire informazioni comuni su ogni richiesta al driver del controller host.
I membri riservati di questa struttura devono essere considerati opachi e sono riservati per l'uso del sistema.
Requisiti
Requisito | Valore |
---|---|
Intestazione | usb.h (include Usb.h) |
Vedi anche
_URB_BULK_OR_INTERRUPT_TRANSFER
_URB_CONTROL_DESCRIPTOR_REQUEST
_URB_CONTROL_GET_CONFIGURATION_REQUEST
_URB_CONTROL_GET_INTERFACE_REQUEST
_URB_CONTROL_GET_STATUS_REQUEST
_URB_CONTROL_VENDOR_OR_CLASS_REQUEST