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 de _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é. Ne pas utiliser.
Reserved0
Réservé. Ne pas utiliser.
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 a la valeur NULL si une mémoire tampon est fournie dans TransferBuffer. Cette MDL doit être allouée à partir d’un pool non paginé.
UrbLink
Réservé. Ne pas utiliser.
hca
Réservé. Ne pas utiliser.
Reserved1
Réservé. Ne pas utiliser.
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é. Ne pas utiliser.
Remarques
Les pilotes peuvent utiliser la routine de service UsbBuildGetDescriptorRequest pour mettre en forme cet URB. Si l’appelant transmet une mémoire tampon trop petite pour contenir toutes les données, le pilote de bus tronque les données pour qu’elles s’intègrent dans la mémoire tampon sans erreur.
Lorsque l’appelant demande le descripteur d’appareil, le pilote de bus retourne une structure de données USB_DEVICE_DESCRIPTOR .
Lorsque l’appelant demande un descripteur de configuration, le pilote de bus retourne le descripteur de configuration dans une structure de 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 à la classe ou à l’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 le membre bString de longueur variable du descripteur de chaîne.
Les membres réservés de cette structure doivent être traités comme opaques et sont réservés à l’utilisation du système.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | usb.h (incluez Usb.h) |