struttura _URB_CONTROL_VENDOR_OR_CLASS_REQUEST (usb.h)

La struttura _URB_CONTROL_VENDOR_OR_CLASS_REQUEST viene usata dai driver client USB per eseguire un fornitore o un comando specifico della classe a un dispositivo, un'interfaccia, un endpoint o un'altra destinazione definita dal dispositivo.

Sintassi

struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST {
  struct _URB_HEADER   Hdr;
  PVOID                Reserved;
  ULONG                TransferFlags;
  ULONG                TransferBufferLength;
  PVOID                TransferBuffer;
  PMDL                 TransferBufferMDL;
  struct _URB          *UrbLink;
  struct _URB_HCD_AREA hca;
  UCHAR                RequestTypeReservedBits;
  UCHAR                Request;
  USHORT               Value;
  USHORT               Index;
  USHORT               Reserved1;
};

Members

Hdr

Puntatore a una struttura di _URB_HEADER che specifica le informazioni sull'intestazione HEADER. Hdr.Function deve essere uno dei URB_FUNCTION_CLASS_XXX o URB_FUNCTION_VENDOR_XXX GET_STATUS e Hdr.Length deve essere sizeof(_URB_CONTROL_VENDOR_OR_CLASS_REQUEST).

Reserved

TransferFlags

Specifica zero, uno o una combinazione dei flag seguenti:

Valore Significato
USBD_TRANSFER_DIRECTION_IN
È impostato per richiedere i dati da un dispositivo. Per trasferire i dati in un dispositivo, questo flag deve essere chiaro. Il flag deve essere impostato se la pipe è una pipe di trasferimento di interrupt.
USBD_SHORT_TRANSFER_OK
È impostato per indirizzare il controller host a non restituire un errore quando riceve un pacchetto dal dispositivo che è più breve della dimensione massima del pacchetto per l'endpoint. Le dimensioni massime dei pacchetti per l'endpoint vengono segnalate nel membro bMaxPacketSize0 della struttura di USB_DEVICE_DESCRIPTOR (descrittore di dispositivo) per l'endpoint di controllo predefinito. Per un endpoint di controllo non predefinito, le dimensioni massime dei pacchetti sono impostate nel membro wMaxPacketSize della struttura di USB_ENDPOINT_DESCRIPTOR (descrittore di endpoint).

Quando il controller host riceve un pacchetto la cui lunghezza è più breve del valore wMaxPacketSize in un endpoint di controllo, il comportamento è il seguente a seconda del tipo di controller host:

  • Nei controller host EHCI il controller host procede immediatamente alla fase di stato del trasferimento del controllo. Il trasferimento viene completato correttamente, indipendentemente dal fatto che USBD_SHORT_TRANSFER_OK sia impostato.
  • Nei controller host UHCI e OHCI, se USBD_SHORT_TRANSFER_OK è impostato, il controller host procede alla fase di stato. Se USBD_SHORT_TRANSFER_OK non è impostato, il controller host abbandona i dati e le fasi di stato del trasferimento del controllo e il trasferimento viene completato con un errore.

Questo flag non deve essere impostato a meno che non sia impostato anche USBD_TRANSFER_DIRECTION_IN.

TransferBufferLength

Specifica la lunghezza, in byte, del buffer specificato in TransferBuffer o descritto in TransferBufferMDL. Il driver del controller host restituisce il numero di byte inviati o letti dalla pipe in questo membro.

TransferBuffer

Puntatore a un buffer residente per il trasferimento o è NULL se viene fornito un MDL in TransferBufferMDL. Il contenuto di questo buffer dipende dal valore di TransferFlags. Se viene specificato USBD_TRANSFER_DIRECTION_IN questo buffer conterrà i dati letti dal dispositivo al ritorno dal driver del controller host. In caso contrario, questo buffer contiene i dati forniti dal driver per il trasferimento al dispositivo.

TransferBufferMDL

Puntatore a un MDL che descrive un buffer residente o è NULL se viene fornito un buffer in TransferBuffer. Il contenuto del buffer dipende dal valore di TransferFlags. Se viene specificato USBD_TRANSFER_DIRECTION_IN, il buffer descritto conterrà i dati letti dal dispositivo al ritorno dal driver del controller host. In caso contrario, il buffer contiene i dati forniti dal driver per il trasferimento al dispositivo. Questo file MDL deve essere allocato da un pool non di paging.

UrbLink

Riservato. Non usare.

hca

Riservato. Non usare.

RequestTypeReservedBits

Riservato. Non usare.

Request

Specifica il codice di richiesta USB o definito dal fornitore per il dispositivo, l'interfaccia, l'endpoint o un'altra destinazione definita dal dispositivo.

Value

Specifica un valore, specifico per Request, che diventa parte del pacchetto di installazione definito tramite USB per la destinazione. Questo valore è definito dall'autore del codice usato in Request.

Index

Specifica l'indice definito dal dispositivo, restituito da una richiesta di configurazione riuscita, se la richiesta riguarda un endpoint o un'interfaccia. In caso contrario, Index deve essere zero.

Reserved1

Riservato. Non usare.

Commenti

I driver possono usare il formato di routine del servizio UsbBuildVendorRequest in questo formato.

I membri riservati di questa struttura devono essere considerati opachi e sono riservati per l'uso del sistema.

Requisiti

   
Intestazione usb.h (include Usb.h)

Vedi anche

Urb

Strutture USB

_URB_HEADER