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 utilizar.
Reserved0
Reservado. No utilizar.
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 es NULL si se proporciona una MDL en TransferBufferMDL.
TransferBufferMDL
Puntero a una MDL que describe un búfer residente o es NULL si se proporciona un búfer en TransferBuffer. Este MDL debe asignarse desde un grupo no paginado.
UrbLink
Reservado. No utilizar.
hca
Reservado. No utilizar.
Reserved1
Reservado. No utilizar.
Index
Especifica el índice definido por el dispositivo del descriptor que se va a recuperar o establecer.
DescriptorType
Indica qué tipo de descriptor se va a recuperar o establecer. Se debe especificar uno de los valores siguientes:
constante usbspec.h | Valor | Versión de 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 | puerto USB 3.0 en la parte frontal |
USB_DEBUG_DESCRIPTOR_TYPE | 0x0a | puerto USB 3.0 en la parte frontal |
USB_INTERFACE_ASSOCIATION_DESCRIPTOR_TYPE | 0x0b | puerto USB 3.0 en la parte frontal |
USB_BOS_DESCRIPTOR_TYPE | 0x0f | puerto USB 3.0 en la parte frontal |
USB_DEVICE_CAPABILITY_DESCRIPTOR_TYPE | 0x10 | puerto USB 3.0 en la parte frontal |
USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR_TYPE | 0x30 | puerto USB 3.0 en la parte frontal |
USB_20_HUB_DESCRIPTOR_TYPE | 0x29 | USB 1.1 USB 2.0 |
USB_30_HUB_DESCRIPTOR_TYPE | 0x2a | puerto USB 3.0 en la parte frontal |
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 USB_STRING_DESCRIPTOR_TYPE se establece en DescriptorType. Este miembro debe establecerse en cero para cualquier otro valor de DescriptorType.
Reserved2
Reservado. No utilizar.
Comentarios
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 punto de conexión de 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 cualquier descriptor específico de clase o específico del dispositivo. El sistema proporciona las rutinas de servicio USBD_ParseConfigurationDescriptorEx y USBD_ParseDescriptors para buscar descriptores individuales en el búfer.
Cuando el autor de la llamada solicita un descriptor de cadena, el controlador de bus devuelve una estructura de USB_STRING_DESCRIPTOR . La propia cadena se encuentra en el miembro bString de longitud variable del descriptor de cadena.
Los miembros reservados de esta estructura deben tratarse como opacos y están reservados para uso del sistema.
Requisitos
Requisito | Valor |
---|---|
Header | usb.h (incluye Usb.h) |