Utilisation des interfaces USB dans les pilotes UMDF 1.x
Avertissement
UMDF 2 est la dernière version d’UMDF et remplace UMDF 1. Tous les nouveaux pilotes UMDF doivent être écrits à l’aide d’UMDF 2. Aucune nouvelle fonctionnalité n’est ajoutée à UMDF 1 et la prise en charge d’UMDF 1 est limitée sur les versions plus récentes de Windows 10. Les pilotes Windows universels doivent utiliser UMDF 2.
Les exemples UMDF 1 archivés se trouvent dans la Windows 11, version 22H2 - Mise à jour des exemples de pilotes de mai 2022.
Pour plus d’informations, consultez Prise en main avec UMDF.
L’infrastructure représente chaque interface USB en tant qu’objet d’interface USB de framework. Lorsqu’un pilote UMDF crée un objet de périphérique USB framework, l’infrastructure crée un objet d’interface USB framework pour chaque interface USB prise en charge par l’appareil.
La plupart des périphériques USB n’ont qu’une seule interface, et l’interface n’a qu’un seul autre paramètre. Les pilotes pour ces périphériques n’ont généralement pas besoin d’utiliser les méthodes d’objet que l’objet d’interface USB de l’infrastructure définit.
Si un pilote UMDF prend en charge les périphériques USB qui fournissent plusieurs interfaces ou d’autres paramètres, les méthodes d’objet d’interface permettent au pilote de :
Obtention des informations d’interface UMDF-USB
Une fois qu’un pilote UMDF a appelé la méthode IWDFUsbTargetFactory::CreateUsbTargetDevice pour créer un objet de périphérique cible UMDF-USB, le pilote peut appeler la méthode IWDFUsbTargetDevice::GetNumInterfaces pour obtenir le nombre d’interfaces USB prises en charge par l’appareil. Ensuite, le pilote peut effectuer des appels à la méthode IWDFUsbTargetDevice::RetrieveUsbInterface pour obtenir des pointeurs vers les interfaces IWDFUsbInterface qui exposent les interfaces USB prises en charge par l’appareil. Ensuite, le pilote peut appeler les méthodes suivantes que chaque objet d’interface USB définit pour obtenir des informations sur l’interface USB :
IWDFUsbInterface::GetInterfaceNumber
Obtient le numéro d’interface USB associé à un objet d’interface USB.
IWDFUsbInterface::GetInterfaceDescriptor
Obtient ce descripteur d’interface USB associé à l’un des autres paramètres d’une interface USB.
IWDFUsbInterface::GetNumEndPoints
Obtient le nombre de points de terminaison (également appelés canaux) associés à l’un des autres paramètres d’une interface USB.
IWDFUsbInterface::GetConfiguredSettingIndex
Obtient une valeur d’index qui identifie le paramètre alternatif actuellement sélectionné pour une interface USB.
IWDFUsbInterface::RetrieveUsbPipeObject
Récupère un pointeur vers l’interface IWDFUsbTargetPipe qui expose l’objet de canal d’infrastructure associé à une interface de périphérique USB et à un index de canal spécifiés.
IWDFUsbInterface::GetWinUsbHandle
Obtient le handle d’interface WinUsb associé à une interface USB.
Sélection d’un autre paramètre pour une interface UMDF-USB
Le pilote UMDF peut appeler la méthode IWDFUsbInterface::SelectSetting pour sélectionner un autre paramètre pour l’une des interfaces USB prises en charge par l’appareil.
Les autres paramètres de l’appareil doivent être numérotés de façon contiguë, en commençant par zéro.
Important La sélection d’un paramètre invalide toutes les informations sur l’interface et les points de terminaison. Par conséquent, le pilote doit obtenir à nouveau ces informations. Le pilote doit également ignorer tous les objets de canal USB qu’il a récupérés précédemment et les recréer.