Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Avertissement
UMDF 2 est la dernière version de UMDF et remplace UMDF 1. Tous les nouveaux pilotes UMDF doivent être écrits à l’aide de UMDF 2. Aucune nouvelle fonctionnalité n’est ajoutée à UMDF 1 et il existe une prise en charge limitée de UMDF 1 sur les versions plus récentes de Windows 10. Les pilotes Windows universels doivent utiliser UMDF 2.
Les échantillons UMDF 1 archivés se trouvent dans Windows 11, version 22H2 - Mise à jour des échantillons de pilotes de mai 2022.
Pour plus d’informations, consultez Prise en main de 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 développeurs de pilotes qui connaissent KMDF comprendront UMDF.
Pour chaque type d’objet framework, la fonction UMDF définit une interface par le biais de 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 au nom 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 sont implémentées par le pilote. Les interfaces exposées par un objet framework sont de la forme IWDF<objet>, tandis que les interfaces de rappel d'événement exposées par un pilote sont de la forme I<objet><action>, où <l’objet> représente une file d’attente, une requête, etc., et <l’action> indique ce que fait l’interface. Les méthodes des interfaces de rappel commencent par « Activé ».
Le pilote UMDF communique avec les objets de l’infrastructure par le biais de 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 avertir le pilote des événements spécifiques. Pour inscrire des fonctions de rappel, le pilote peut appeler, par exemple, les méthodes d’objet framework suivantes et passer un pointeur à l’interface IUnknown associée à toutes les interfaces pour les fonctions de rappel prises en charge par le pilote.
En guise d’exemple de communication entre le pilote et le cadre, considérez l'objet par défaut de file d’attente d’E/S d'un appareil. Un pilote peut appeler des méthodes, telles que IWDFIoQueue ::GetState, pour récupérer des informations d’état sur la file d’attente d’E/S ou IWDFIoQueue ::RetrieveNextRequest pour récupérer une requête à 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.
Le cadre fournit la synchronisation nécessaire entre les méthodes de rappel du pilote. Par défaut, le cadre se synchronise au niveau de l'objet périphérique ; autrement dit, le cadre n’appelle pas simultanément les méthodes de rappel d’événement au niveau de l'objet périphérique. Un pilote peut remplacer cette valeur par défaut en demandant aucune synchronisation. Pour plus d’informations, consultez Spécification d’un mode de synchronisation de rappel.