_URB_CONTROL_VENDOR_OR_CLASS_REQUEST struttura (usb.h)

La struttura _URB_CONTROL_VENDOR_OR_CLASS_REQUEST viene usata dai driver client USB per emettere un comando specifico del fornitore o 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 _URB_HEADER che specifica le informazioni sull'intestazione DELL'AREA. 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 interruzioni.
USBD_SHORT_TRANSFER_OK
È impostato per indirizzare il controller host a non restituire un errore quando riceve un pacchetto dal dispositivo che è più breve rispetto alle dimensioni massime del pacchetto per l'endpoint. Le dimensioni massime dei pacchetti per l'endpoint vengono segnalate nel membro bMaxPacketSize0 della struttura USB_DEVICE_DESCRIPTOR (descrittore 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 USB_ENDPOINT_DESCRIPTOR (descrittore dell'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 a 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 USBD_TRANSFER_DIRECTION_IN viene specificato questo buffer conterrà i dati letti dal dispositivo restituito dal driver del controller host. In caso contrario, questo buffer contiene dati forniti dal driver per il trasferimento nel 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 restituito dal driver del controller host. In caso contrario, il buffer contiene dati forniti dal driver per il trasferimento nel dispositivo. Questa MDL deve essere allocata dal pool non a pagina.

UrbLink

Riservato. Non usare.

hca

Riservato. Non usare.

RequestTypeReservedBits

Riservato. Non usare.

Request

Specifica il codice di richiesta definito dal fornitore o USB 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 da 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 è per un endpoint o un'interfaccia. In caso contrario, l'indice deve essere zero.

Reserved1

Riservato. Non usare.

Commenti

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

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_HEADER