Modèle de programmation DDI UMDF
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 et le pilote UMDF communiquent via le DDI UMDF. La DDI UMDF est similaire à la DDI KMDF, sauf que la DDI UMDF est basée sur COM. Par conséquent, les rédacteurs de pilotes familiarisés avec KMDF comprendront l’UMDF.
Pour chaque type d’objet framework, l’UMDF définit une interface à travers laquelle manipuler des instances de l’objet. Chaque interface prend en charge les méthodes et les propriétés. Les méthodes définissent des actions qui peuvent être effectuées pour le compte de l’objet et des propriétés définies et récupèrent les caractéristiques de l’objet. Certaines interfaces sont implémentées par l’infrastructure et d’autres par le pilote. Les interfaces exposées par un objet framework sont de la forme de l’objet IWDF<, tandis que les interfaces de rappel d’événement exposées par un pilote sont de l’action> objet><de formulaire I<, où <l’objet> représente une file d’attente, une requête, etc., et <l’action> indique ce que l’interface fait.> Les méthodes des interfaces de rappel commencent par « Activé ».
Le pilote UMDF communique avec les objets de l’infrastructure via leurs méthodes et propriétés. L’infrastructure communique avec le pilote par le biais de notifications d’événements, qui sont des fonctions de rappel que l’infrastructure peut appeler pour informer le pilote d’événements spécifiques. Pour inscrire des fonctions de rappel, le pilote peut appeler, par exemple, les méthodes d’objet framework suivantes et peut passer un pointeur vers l’interface IUnknown associée à toutes les interfaces pour les fonctions de rappel prises en charge par le pilote.
À titre d’exemple de communication entre le pilote et l’infrastructure, considérez l’objet file d’attente d’E/S par défaut d’un appareil. Un pilote peut appeler des méthodes, telles que IWDFIoQueue::GetState, pour récupérer status informations sur la file d’attente d’E/S, ou IWDFIoQueue::RetrieveNextRequest pour récupérer une demande à partir de la file d’attente d’E/S. Un pilote peut également demander des notifications sur la file d’attente d’E/S en appelant la méthode IWDFDevice::CreateIoQueue pour inscrire des interfaces de rappel, telles que IQueueCallbackRead et IQueueCallbackWrite. Les méthodes de ces interfaces sont ensuite appelées par l’infrastructure lorsqu’une application envoie des demandes de lecture et d’écriture.
L’infrastructure fournit toute synchronisation requise entre les méthodes de rappel de pilote. Par défaut, l’infrastructure se synchronise au niveau de l’objet de l’appareil ; autrement dit, l’infrastructure n’appelle pas simultanément les méthodes de rappel d’événements au niveau de l’objet de l’appareil ou en dessous. Un pilote peut remplacer cette valeur par défaut en ne demandant aucune synchronisation. Pour plus d’informations, consultez Spécification d’un mode de synchronisation de rappel.