Compartir a través de


estructura _URB_CONTROL_DESCRIPTOR_REQUEST (usb.h)

Los controladores de cliente USB usan la estructura _URB_CONTROL_DESCRIPTOR_REQUEST para obtener o establecer descriptores en un dispositivo USB.

Sintaxis

struct _URB_CONTROL_DESCRIPTOR_REQUEST {
  struct _URB_HEADER   Hdr;
  PVOID                Reserved;
  ULONG                Reserved0;
  ULONG                TransferBufferLength;
  PVOID                TransferBuffer;
  PMDL                 TransferBufferMDL;
  struct _URB          *UrbLink;
  struct _URB_HCD_AREA hca;
  USHORT               Reserved1;
  UCHAR                Index;
  UCHAR                DescriptorType;
  USHORT               LanguageId;
  USHORT               Reserved2;
};

Miembros

Hdr

Puntero a una estructura de _URB_HEADER que especifica la información del encabezado URB. hdr.Function debe ser uno de los siguientes:

Hdr.Length debe ser igual a sizeof(_URB_CONTROL_DESCRIPTOR_REQUEST).

Reserved

Reservado. No use.

Reserved0

Reservado. No use.

TransferBufferLength

Especifica la longitud, en bytes, del búfer especificado en TransferBuffer o descrito en TransferBufferMDL. El controlador del controlador de host devuelve el número de bytes enviados o leídos desde la canalización de este miembro.

TransferBuffer

Puntero a un búfer residente para la transferencia o se NULL si se proporciona una MDL en TransferBufferMDL.

TransferBufferMDL

Puntero a una MDL que describe un búfer residente o NULL si se proporciona un búfer en TransferBuffer. Este MDL debe asignarse desde un grupo no paginado.

UrbLink

Reservado. No use.

hca

Reservado. No use.

Reserved1

Reservado. No use.

Index

Especifica el índice definido por el dispositivo del descriptor que se recupera o establece.

DescriptorType

Indica qué tipo de descriptor se está recuperando o establecendo. Se debe especificar uno de los siguientes valores:

constante usbspec.h Valor Versión USB
USB_DEVICE_DESCRIPTOR_TYPE 0x01 USB 1.1
USB_CONFIGURATION_DESCRIPTOR_TYPE 0x02 USB 1.1
USB_STRING_DESCRIPTOR_TYPE 0x03 USB 1.1
USB_INTERFACE_DESCRIPTOR_TYPE 0x04 USB 1.1
USB_ENDPOINT_DESCRIPTOR_TYPE 0x05 USB 1.1
USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE 0x06 USB 2.0
USB_OTHER_SPEED_CONFIGURATION_DESCRIPTOR_TYPE 0x07 USB 2.0
USB_INTERFACE_POWER_DESCRIPTOR_TYPE 0x08 USB 2.0
USB_OTG_DESCRIPTOR_TYPE 0x09 USB 3.0
USB_DEBUG_DESCRIPTOR_TYPE 0x0a USB 3.0
USB_INTERFACE_ASSOCIATION_DESCRIPTOR_TYPE 0x0b USB 3.0
USB_BOS_DESCRIPTOR_TYPE 0x0f USB 3.0
USB_DEVICE_CAPABILITY_DESCRIPTOR_TYPE 0x10 USB 3.0
USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR_TYPE 0x30 USB 3.0
USB_20_HUB_DESCRIPTOR_TYPE 0x29 USB 1.1
USB 2.0
USB_30_HUB_DESCRIPTOR_TYPE 0x2a USB 3.0
USB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR_TYPE 0x31 USB 3.1

LanguageId

Especifica el identificador de idioma del descriptor que se va a recuperar cuando se establece USB_STRING_DESCRIPTOR_TYPE en DescriptorType. Este miembro debe establecerse en cero para cualquier otro valor de DescriptorType.

Reserved2

Reservado. No use.

Observaciones

Los controladores pueden usar la rutina de servicio UsbBuildGetDescriptorRequest para dar formato a este URB. Si el autor de la llamada pasa un búfer demasiado pequeño para contener todos los datos, el controlador de bus trunca los datos que caben en el búfer sin errores.

Cuando el autor de la llamada solicita el descriptor de dispositivo, el controlador de bus devuelve una estructura de datos USB_DEVICE_DESCRIPTOR.

Cuando el autor de la llamada solicita un descriptor de configuración, el controlador de bus devuelve el descriptor de configuración en una estructura de USB_CONFIGURATION_DESCRIPTOR, seguido de los descriptores de interfaz y de punto de conexión para esa configuración. El controlador puede acceder a los descriptores de interfaz y punto de conexión como estructuras de USB_INTERFACE_DESCRIPTOR y USB_ENDPOINT_DESCRIPTOR. El controlador de bus también devuelve los descriptores específicos de clase o específicos del dispositivo. El sistema proporciona las rutinas de servicio USBD_ParseConfigurationDescriptorEx y USBD_ParseDescriptors para buscar descriptores individuales dentro del búfer.

Cuando el autor de la llamada solicita un descriptor de cadena, el controlador de bus devuelve una estructura USB_STRING_DESCRIPTOR. La propia cadena se encuentra en la longitud variable miembro bString del descriptor de cadena.

Los miembros reservados de esta estructura deben tratarse como opacos y están reservados para el uso del sistema.

Requisitos

Requisito Valor
encabezado de usb.h (incluya Usb.h)

Consulte también

urb de

estructuras USB de

USB_CONFIGURATION_DESCRIPTOR

USB_DEVICE_DESCRIPTOR

USB_ENDPOINT_DESCRIPTOR

USB_INTERFACE_DESCRIPTOR

USB_STRING_DESCRIPTOR

_URB_HEADER