_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 impostata, l'oggetto VERRÀ utilizzato 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 impostata, l'oggetto VERRÀ utilizzato 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 impostata, l'oggetto VERRÀ utilizzato 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 impostata, l'oggetto VERRÀ utilizzato 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 impostata, viene utilizzato 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 _URB_HEADER è un membro di tutte le richieste USB che fanno parte della struttura DELL'OGGETTO. 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

Strutture USB

_URB_BULK_OR_INTERRUPT_TRANSFER

_URB_CONTROL_DESCRIPTOR_REQUEST

_URB_CONTROL_FEATURE_REQUEST

_URB_CONTROL_GET_CONFIGURATION_REQUEST

_URB_CONTROL_GET_INTERFACE_REQUEST

_URB_CONTROL_GET_STATUS_REQUEST

_URB_CONTROL_TRANSFER

_URB_CONTROL_VENDOR_OR_CLASS_REQUEST

_URB_GET_CURRENT_FRAME_NUMBER

_URB_ISOCH_TRANSFER

_URB_OS_FEATURE_DESCRIPTOR_REQUEST

_URB_PIPE_REQUEST

_URB_SELECT_CONFIGURATION

_URB_SELECT_INTERFACE