estrutura _URB_CONTROL_DESCRIPTOR_REQUEST (usb.h)
A estrutura _URB_CONTROL_DESCRIPTOR_REQUEST é usada por drivers de cliente USB para obter ou definir descritores em um dispositivo USB.
Sintaxe
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;
};
Membros
Hdr
Ponteiro para uma estrutura _URB_HEADER que especifica as informações do cabeçalho URB. Hdr.Function deve ser um dos seguintes:
Hdr.Length deve ser igual sizeof(_URB_CONTROL_DESCRIPTOR_REQUEST)
a .
Reserved
Reservado. Não use.
Reserved0
Reservado. Não use.
TransferBufferLength
Especifica o comprimento, em bytes, do buffer especificado em TransferBuffer ou descrito em TransferBufferMDL. O driver do controlador de host retorna o número de bytes enviados ou lidos do pipe neste membro.
TransferBuffer
Ponteiro para um buffer residente para a transferência ou será NULL se um MDL for fornecido em TransferBufferMDL.
TransferBufferMDL
Ponteiro para um MDL que descreve um buffer residente ou é NULL se um buffer for fornecido no TransferBuffer. Esse MDL deve ser alocado do pool nãopagado.
UrbLink
Reservado. Não use.
hca
Reservado. Não use.
Reserved1
Reservado. Não use.
Index
Especifica o índice definido pelo dispositivo do descritor que está sendo recuperado ou definido.
DescriptorType
Indica que tipo de descritor está sendo recuperado ou definido. Um dos seguintes valores deve ser especificado:
constante usbspec.h | Valor | Versão 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 a ID do idioma do descritor a ser recuperado quando USB_STRING_DESCRIPTOR_TYPE é definido em DescriptorType. Esse membro deve ser definido como zero para qualquer outro valor em DescriptorType.
Reserved2
Reservado. Não use.
Comentários
Os drivers podem usar a rotina de serviço UsbBuildGetDescriptorRequest para formatar esse URB. Se o chamador passar um buffer muito pequeno para manter todos os dados, o motorista do barramento truncará os dados para caber no buffer sem erros.
Quando o chamador solicita o descritor do dispositivo, o motorista do barramento retorna uma estrutura de dados USB_DEVICE_DESCRIPTOR .
Quando o chamador solicita um descritor de configuração, o driver de barramento retorna o descritor de configuração em uma estrutura USB_CONFIGURATION_DESCRIPTOR , seguido pelos descritores de interface e ponto de extremidade para essa configuração. O driver pode acessar a interface e os descritores de ponto de extremidade como estruturas de USB_INTERFACE_DESCRIPTOR e USB_ENDPOINT_DESCRIPTOR . O driver de barramento também retorna descritores específicos da classe ou específicos do dispositivo. O sistema fornece as rotinas de serviço USBD_ParseConfigurationDescriptorEx e USBD_ParseDescriptors para localizar descritores individuais dentro do buffer.
Quando o chamador solicita um descritor de cadeia de caracteres, o driver de barramento retorna uma estrutura USB_STRING_DESCRIPTOR . A cadeia de caracteres em si é encontrada no membro bString de comprimento variável do descritor de cadeia de caracteres.
Os membros reservados dessa estrutura devem ser tratados como opacos e reservados para uso do sistema.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | usb.h (inclua Usb.h) |