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)

Voir aussi

URB

USB Structures

USB_CONFIGURATION_DESCRIPTOR

USB_DEVICE_DESCRIPTOR

USB_ENDPOINT_DESCRIPTOR

USB_INTERFACE_DESCRIPTOR

USB_STRING_DESCRIPTOR

_URB_HEADER