structure _URB_CONTROL_DESCRIPTOR_REQUEST (usb.h)
La structure _URB_CONTROL_DESCRIPTOR_REQUEST est utilisée par les pilotes clients USB pour obtenir ou définir des descripteurs sur un périphérique USB.
Syntaxe
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;
};
Membres
Hdr
Pointeur vers une structure _URB_HEADER qui spécifie les informations d’en-tête URB. Hdr.Function doit être l’un des éléments suivants :
Hdr.Length doit être égal à sizeof(_URB_CONTROL_DESCRIPTOR_REQUEST)
.
Reserved
Réservé. N’utilisez pas.
Reserved0
Réservé. N’utilisez pas.
TransferBufferLength
Spécifie la longueur, en octets, de la mémoire tampon spécifiée dans TransferBuffer ou décrite dans TransferBufferMDL. Le pilote du contrôleur hôte retourne le nombre d’octets envoyés ou lus à partir du canal dans ce membre.
TransferBuffer
Pointeur vers une mémoire tampon résidente pour le transfert ou est NULL si un MDL est fourni dans transferBufferMDL.
TransferBufferMDL
Pointeur vers un MDL qui décrit une mémoire tampon résidente ou est NULL si une mémoire tampon est fournie dans TransferBuffer. Ce MDL doit être alloué à partir d’un pool non paginé.
UrbLink
Réservé. N’utilisez pas.
hca
Réservé. N’utilisez pas.
Reserved1
Réservé. N’utilisez pas.
Index
Spécifie l’index défini par l’appareil du descripteur en cours de récupération ou de définition.
DescriptorType
Indique le type de descripteur récupéré ou défini. L’une des valeurs suivantes doit être spécifiée :
constante usbspec.h | Valeur | USB Version |
---|---|---|
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
Spécifie l’ID de langue du descripteur à récupérer lorsque USB_STRING_DESCRIPTOR_TYPE est défini dans DescriptorType. Ce membre doit être défini sur zéro pour toute autre valeur dans DescriptorType.
Reserved2
Réservé. N’utilisez pas.
Remarques
Les pilotes peuvent utiliser le UsbBuildGetDescriptorRequest routine de service pour mettre en forme cet URB. Si l’appelant passe une mémoire tampon trop petite pour contenir toutes les données, le pilote de bus tronque les données pour s’adapter à la mémoire tampon sans erreur.
Lorsque l’appelant demande le descripteur d’appareil, le pilote bus retourne une structure de données USB_DEVICE_DESCRIPTOR.
Lorsque l’appelant demande un descripteur de configuration, le pilote bus retourne le descripteur de configuration dans une structure USB_CONFIGURATION_DESCRIPTOR, suivi des descripteurs d’interface et de point de terminaison pour cette configuration. Le pilote peut accéder aux descripteurs d’interface et de point de terminaison en tant que structures USB_INTERFACE_DESCRIPTOR et USB_ENDPOINT_DESCRIPTOR. Le pilote de bus retourne également tous les descripteurs spécifiques à une classe ou spécifiques à un appareil. Le système fournit les routines de service USBD_ParseConfigurationDescriptorEx et USBD_ParseDescriptors pour rechercher des descripteurs individuels dans la mémoire tampon.
Lorsque l’appelant demande un descripteur de chaîne, le pilote de bus retourne une structure USB_STRING_DESCRIPTOR. La chaîne elle-même se trouve dans la longueur variable bString membre du descripteur de chaîne.
Les membres réservés de cette structure doivent être traités comme opaques et sont réservés à une utilisation système.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | usb.h (include Usb.h) |