USBD_CreateConfigurationRequestEx, fonction (usbdlib.h)

La routine USBD_CreateConfigurationRequestEx alloue et met en forme un URB pour sélectionner une configuration pour un périphérique USB.

USBD_CreateConfigurationRequestEx remplace USBD_CreateConfigurationRequest.

Syntaxe

PURB USBD_CreateConfigurationRequestEx(
  [in] PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
  [in] PUSBD_INTERFACE_LIST_ENTRY    InterfaceList
);

Paramètres

[in] ConfigurationDescriptor

Pointeur vers une structure de USB_CONFIGURATION_DESCRIPTOR allouée à l’appelant qui contient le descripteur de configuration pour la configuration à sélectionner. En règle générale, le pilote client envoie un URB de type URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE (voir _URB_CONTROL_DESCRIPTOR_REQUEST) pour récupérer des informations sur les configurations, les interfaces, les points de terminaison, le fournisseur et les descripteurs spécifiques à la classe à partir d’un périphérique USB. Lorsque le pilote client spécifie USB_CONFIGURATION_DESCRIPTOR_TYPE comme type de descripteur, la demande récupère toutes les informations de périphérique dans une structure de USB_CONFIGURATION_DESCRIPTOR . Le pilote passe ensuite le pointeur reçu à la structure USB_CONFIGURATION_DESCRIPTOR dans le paramètre ConfigurationDescriptor .

[in] InterfaceList

Pointeur vers le premier élément d’un tableau de structures USBD_INTERFACE_LIST_ENTRY alloué par l’appelant. La longueur du tableau dépend du nombre d’interfaces dans le descripteur de configuration. Le nombre d’éléments dans le tableau doit être supérieur au nombre d’interfaces dans la configuration. Initialisez le tableau en appelant RtlZeroMemory. Le membre InterfaceDescriptor du dernier élément du tableau doit avoir la valeur NULL.

Valeur retournée

USBD_CreateConfigurationRequestEx alloue une structure URB , la met en forme pour la demande URB_FUNCTION_SELECT_CONFIGURATION (demande de configuration de sélection) et retourne un pointeur vers l’URB. Le pilote client peut ensuite utiliser l’URB retourné pour envoyer la demande de configuration de sélection au pilote du contrôleur hôte afin de définir la configuration. Vous devez libérer l’URB lorsque vous avez terminé de l’utiliser.

Remarques

Pour plus d’informations sur la création d’un exemple de code et de demande de configuration de sélection, consultez Comment sélectionner une configuration pour un périphérique USB.

La valeur retournée est un pointeur vers la structure URB que vous pouvez utiliser pour envoyer une demande de configuration de sélection au pilote du contrôleur hôte afin de définir la configuration spécifiée.

Une fois la pile de pilotes USB terminée la demande de sélection de configuration, vous pouvez inspecter les structures USBD_INTERFACE_INFORMATION . Le membre Pipes de USBD_INTERFACE_INFORMATION pointe vers un tableau de structures USBD_PIPE_INFORMATION . Le pilote de bus USB remplit le tableau de structures USBD_PIPE_INFORMATION avec des informations sur les canaux associés aux points de terminaison de l’interface. Le pilote client peut obtenir des handles de canal à partir du Pipes[i].PipeHandle et les utiliser pour envoyer des demandes d’E/S à des canaux spécifiques.

Une fois que vous avez terminé toutes les opérations avec l’URB retourné, vous devez libérer l’URB en appelant ExFreePool.

Vous pouvez allouer le descripteur de configuration et le tableau à partir d’un pool non paginé ou paginé. Les appelants de cette routine peuvent s’exécuter sur IRQL <= DISPATCH_LEVEL si la mémoire pointée par ConfigurationDescriptor et InterfaceList est allouée à partir d’un pool non paginé. Sinon, les appelants doivent s’exécuter au DISPATCH_LEVEL IRQL < .

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête usbdlib.h (inclure Usbdlib.h)
Bibliothèque Usbd.lib
IRQL DISPATCH_LEVEL (voir les remarques)

Voir aussi

Comment sélectionner une configuration pour un périphérique USB

Informations de référence sur la programmation du pilote de périphérique USB

USBD_INTERFACE_INFORMATION

_URB_SELECT_CONFIGURATION