Utilisation de périphériques 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 sont disponibles dans la mise à jour des exemples de pilotes Windows 11, version 22H2 - Mai 2022.
Pour plus d’informations, consultez Prise en main avec UMDF.
L’infrastructure représente chaque périphérique USB en tant qu’objet de périphérique USB de framework. Un pilote UMDF doit créer un objet de périphérique USB d’infrastructure avant que le pilote puisse accéder à la prise en charge de l’infrastructure pour les cibles d’E/S USB. UMDF fournit des méthodes d’objet de périphérique USB qui permettent à un pilote UMDF de :
Création d’un objet de périphérique UMDF-USB
Pour utiliser les fonctionnalités cibles d’E/S USB de l’infrastructure, un pilote UMDF doit d’abord obtenir un pointeur vers l’interface IWDFUsbTargetFactory . Pour obtenir le pointeur, le pilote doit appeler la méthode QueryInterface de l’interface IWDFDevice de l’appareil. L’exemple de code suivant montre comment appeler QueryInterface pour obtenir le pointeur :
hr = pdevice->QueryInterface(IID_IWDFUsbTargetFactory, (LPVOID*)&ppUsbTargetFactory);
Le pilote doit ensuite appeler la méthode IWDFUsbTargetFactory::CreateUsbTargetDevice pour créer un objet cible d’E/S USB pour l’appareil. Une fois que le pilote a créé la cible d’E/S USB, le pilote peut envoyer des requêtes à la cible d’E/S. En règle générale, les pilotes appellent IWDFUsbTargetFactory::CreateUsbTargetDevice à partir d’une fonction de rappel IPnpCallbackHardware::OnPrepareHardware .
Une fois que le pilote a appelé IWDFUsbTargetFactory::CreateUsbTargetDevice, le pilote peut obtenir des informations sur le périphérique USB (par exemple, des descripteurs USB pour le périphérique, des interfaces USB et des points de terminaison d’interface). Les descripteurs USB sont décrits dans la spécification USB.
Obtention d’informations sur le périphérique UMDF-USB
Après 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 les méthodes suivantes définies par l’objet périphérique cible USB pour obtenir des informations sur un périphérique USB :
IWDFUsbTargetDevice::RetrieveDescriptor
Obtient le descripteur de périphérique USB d’un appareil.
IWDFUsbTargetDevice::GetNumInterfaces
Obtient le nombre d’interfaces USB prises en charge par l’appareil.
IWDFUsbTargetDevice::RetrieveUsbInterface
Obtient un pointeur vers une interface IWDFUsbInterface qui expose l’une des interfaces USB prises en charge par l’appareil.
IWDFUsbTargetDevice::RetrieveDeviceInformation
Récupère les informations de fonctionnalité associées à un périphérique USB.
IWDFUsbTargetDevice::RetrievePowerPolicy
Récupère une stratégie d’alimentation WinUsb.
IWDFUsbTargetDevice::GetWinUsbHandle
Obtient le handle d’interface WinUsb associé à l’objet d’appareil cible d’E/S.
Envoi d’un transfert de contrôle à un objet de périphérique UMDF-USB
Un pilote UMDF peut appeler la méthode IWDFUsbTargetDevice::FormatRequestForControlTransfer pour mettre en forme une demande d’E/S qui décrit un transfert de contrôle USB standard, spécifique à la classe de périphérique ou spécifique au fournisseur. Le pilote peut ensuite appeler la méthode IWDFIoRequest::Send pour envoyer la requête de manière synchrone ou asynchrone.
Définition de la stratégie d’alimentation pour un périphérique UMDF-USB
Un pilote UMDF peut appeler la méthode IWDFUsbTargetDevice::SetPowerPolicy pour définir la stratégie d’alimentation utilisée par WinUsb pour un périphérique USB. La stratégie d’alimentation d’un périphérique USB modifie les états de gestion de l’alimentation de l’appareil.