Modèle de pilote Windows - Windows Driver Model
En informatique , le modèle de pilote Windows ( WDM ) - également connu à un moment donné sous le nom de modèle de pilote Win32 - est un cadre pour les pilotes de périphérique qui a été introduit avec Windows 98 et Windows 2000 pour remplacer VxD , qui était utilisé sur les anciennes versions de Windows comme comme Windows 95 et Windows 3.1 , ainsi que le modèle de pilote Windows NT .
Aperçu
Les pilotes WDM sont superposés dans une pile et communiquent entre eux via des paquets de demande d'E / S (IRP). Le modèle de pilote Microsoft Windows a unifié les modèles de pilote pour les gammes de produits Windows 9x et Windows NT en standardisant les exigences et en réduisant la quantité de code à écrire. Les pilotes WDM ne fonctionneront pas sur les systèmes d'exploitation antérieurs à Windows 98 ou Windows 2000, tels que Windows 95 (avant la mise à jour OSR2 qui charge le modèle WDM), Windows NT 4.0 et Windows 3.1. En se conformant à WDM, les pilotes peuvent être compatibles binaires et compatibles avec la source sur Windows 98, Windows 98 Deuxième Édition, Windows Me , Windows 2000, Windows XP , Windows Server 2003 et Windows Vista (pour la compatibilité descendante) sur les ordinateurs x86 . Les pilotes WDM sont conçus pour être compatibles vers l' avant afin qu'un pilote WDM puisse fonctionner sur une version de Windows plus récente que celle pour laquelle le pilote a été initialement écrit, mais cela signifierait que le pilote ne peut pas profiter des nouvelles fonctionnalités introduites avec le nouveau version. WDM n'est généralement pas rétrocompatible , c'est-à-dire qu'un pilote WDM n'est pas garanti de s'exécuter sur une version antérieure de Windows. Par exemple, Windows XP peut utiliser un pilote écrit pour Windows 2000 mais n'utilisera aucune des nouvelles fonctionnalités WDM introduites dans Windows XP. Cependant, un pilote écrit pour Windows XP peut se charger ou non sur Windows 2000.
WDM existe dans la couche intermédiaire des pilotes en mode noyau de Windows 2000 et a été introduit pour augmenter la fonctionnalité et la facilité d'écriture des pilotes pour Windows. Bien que WDM ait été principalement conçu pour être compatible binaire et source entre Windows 98 et Windows 2000, cela n'est pas toujours souhaité et des pilotes spécifiques peuvent donc être développés pour l'un ou l'autre des systèmes d'exploitation.
Pilotes de périphérique en mode noyau
Avec le modèle de pilotes Windows (WDM) pour les périphériques, Microsoft met en œuvre une approche des pilotes en mode noyau qui est propre aux systèmes d'exploitation Windows . WDM implémente une architecture en couches pour les pilotes de périphériques , et chaque périphérique d'un ordinateur est servi par une pile de pilotes. Cependant, chaque pilote de cette pile peut isoler en chaîne les fonctionnalités indépendantes du matériel du pilote situé au-dessus et en dessous. Les pilotes de la pile n'ont donc pas besoin d'interagir directement les uns avec les autres. WDM définit l'architecture et les procédures de périphérique pour une gamme de périphériques, tels que l'affichage et la carte réseau , connus sous le nom de Spécification d'interface de pilote de réseau (NDIS). Dans l'architecture NDIS, les pilotes réseau en couches incluent des pilotes de niveau inférieur qui gèrent le matériel et des pilotes de niveau supérieur qui implémentent le transport de données réseau, tels que le protocole TCP ( Transmission Control Protocol ).
Alors que WDM définit trois types de pilotes de périphérique, toutes les piles de pilotes pour un périphérique donné ne contiennent pas tous les types de pilotes de périphérique. Les trois types de pilotes de périphérique WDM sont:
Pilote de bus : pour chaque bus sur la carte mère, il y a un pilote de bus unique, avec la responsabilité principale de l'identification de tous les périphériques connectés à ce bus et de la réponse aux événements plug and play. Microsoft fournira des pilotes de bus dans le cadre du système d'exploitation, tels que PCI , PnPISA , SCSI , USB et FireWire .
Pilote de fonction : il s'agit du pilote principal d'un périphérique et il fournit l'interface opérationnelle d'un périphérique en gérant les opérations de lecture et d'écriture. Les pilotes de fonction sont écrits par les fournisseurs de périphériques et, pour leur interaction avec le matériel, ils dépendent d'un pilote de bus spécifique présent dans le système d'exploitation Windows.
Pilote de filtre : ce pilote est facultatif et peut modifier le comportement d'un périphérique, comme les demandes d'entrée et de sortie. Ces pilotes peuvent être implémentés en tant que pilotes de filtre de niveau inférieur et supérieur.
Pile de pilotes orientée objet
Les pilotes de fonction et les pilotes de bus sont souvent implémentés sous forme de paires pilote / minidriver, qui en pratique sont soit une classe / miniclasse, soit une paire port / miniport.
Les pilotes de bus pour les périphériques connectés à un bus sont implémentés en tant que pilotes de classe et sont indépendants du matériel. Ils prendront en charge les opérations d'un certain type d'appareil. Les systèmes d'exploitation Windows incluent un certain nombre de pilotes de classe, tels que le pilote kbdclass.sys pour les claviers. Les pilotes de miniclass, quant à eux, sont fournis par le fournisseur d'un périphérique et ne prennent en charge que les opérations spécifiques au périphérique, pour un périphérique particulier d'une classe donnée.
Les pilotes de port prennent en charge les opérations d' entrée / sortie (E / S) générales pour une interface matérielle périphérique. La fonctionnalité de base des pilotes de port est mandatée par le système d'exploitation, et les systèmes d'exploitation Windows intègrent une variété de pilotes de port. Par exemple, le pilote de port i8042prt.sys pour le microcontrôleur 8042 connecte les claviers PS / 2 au bus périphérique de la carte mère. Les pilotes de miniport, comme les pilotes de miniclasse, sont fournis par les fournisseurs de matériel et ne prennent en charge que les opérations spécifiques au périphérique du matériel périphérique connecté à un port de la carte mère.
Chaque pilote qui traite une demande d'E / S pour un périphérique a un objet correspondant, qui est chargé dans la mémoire principale . Un objet périphérique est créé par le système d'exploitation Windows à partir de la classe de périphérique associée. Les objets Device contiennent des structures de type DEVICE_OBJECT, qui stockent des pointeurs vers leur pilote. Au moment de l'exécution, ces pointeurs sont utilisés pour localiser la routine de répartition d'un pilote et les fonctions membres. Dans la pile de pilotes WDM, l'objet de périphérique de pilote de filtre, connu sous le nom de filtre supérieur, recevra un paquet de demande d'E / S (IRP) pour un périphérique du gestionnaire d'E / S. Si le pilote de filtre supérieur ne peut pas répondre à la demande, il localisera l'objet du pilote une étape vers le bas dans la pile de pilotes. L'IRP est transmis à la pile de pilotes en appelant la fonction IoCallDrive () et traité par l'objet de périphérique de pilote de fonction, également appelé objet de périphérique fonctionnel. L'objet de périphérique de pilote de fonction peut à son tour transmettre l'IRP au filtre inférieur, un autre objet de périphérique de filtre. Ensuite, l'IRP peut être transmis au pilote de bus, qui fonctionne comme objet de périphérique physique. L'objet pilote de bus se trouve au bas de la pile de pilotes et interagit avec la couche d'abstraction matérielle , qui fait partie du noyau du système d'exploitation Windows et permet aux systèmes d'exploitation Windows de s'exécuter sur divers processeurs , différentes architectures d' unité de gestion de mémoire et une variété de systèmes informatiques avec différentes architectures de bus d'E / S. L'exécution d'un IRP est terminée lorsque l'un des objets pilote de la pile renvoie la demande au gestionnaire d'E / S, avec le résultat et un indicateur d'état.
Pilotes de périphérique pour différents systèmes d'exploitation Windows
Le framework WDM a été développé par Microsoft pour simplifier la communication entre le système d'exploitation et les pilotes à l'intérieur du noyau. Dans les systèmes d'exploitation Windows, les pilotes sont implémentés sous forme de fichiers .DLL ou .SYS de bibliothèques de liens dynamiques . Les pilotes compatibles WDM doivent suivre les règles de conception, d'initialisation, de plug-and-play, de gestion de l'alimentation et d'allocation de mémoire. En pratique, les programmeurs de pilotes WDM réutilisent de gros morceaux de code lors de la création de nouveaux pilotes orientés objet . Cela signifie que les pilotes de la pile WDM peuvent contenir des fonctionnalités résiduelles, qui ne sont pas documentées dans les spécifications. Les pilotes qui ont réussi le test de qualité Microsoft sont signés numériquement par Microsoft. Les tests de compatibilité matérielle Microsoft et le kit de développement de pilotes comprennent des tests de fiabilité et de résistance.
Un pilote de périphérique qui n'est pas conçu pour un composant matériel spécifique peut permettre à un autre périphérique de fonctionner. Cela est dû au fait que les fonctionnalités de base d'une classe de périphériques matériels sont similaires. La fonctionnalité de la classe de carte vidéo, par exemple, permet au pilote de la carte graphique Microsoft Basic de fonctionner avec une grande variété de cartes vidéo. Cependant, installer le mauvais pilote pour un périphérique signifie que toutes les fonctionnalités du périphérique ne peuvent pas être utilisées et peuvent entraîner de mauvaises performances et la déstabilisation du système d'exploitation Windows. Les fournisseurs de périphériques matériels peuvent publier des pilotes de périphériques mis à jour pour des systèmes d'exploitation Windows particuliers, pour améliorer les performances, ajouter des fonctionnalités ou corriger des bogues . Si un périphérique ne fonctionne pas comme prévu, les derniers pilotes de périphérique doivent être téléchargés à partir du site Web du fournisseur et installés.
Les pilotes de périphérique sont conçus pour des versions particulières du système d'exploitation Windows et les pilotes de périphérique d'une version précédente de Windows peuvent ne pas fonctionner correctement ou pas du tout avec d'autres versions. Étant donné que de nombreux pilotes de périphérique s'exécutent en mode noyau, l'installation de pilotes pour une version antérieure du système d'exploitation peut déstabiliser le système d'exploitation Windows. La migration d'un ordinateur vers une version supérieure d'un système d'exploitation Windows nécessite donc que de nouveaux pilotes de périphérique soient installés pour tous les composants matériels. La recherche de pilotes de périphérique à jour et leur installation pour Windows 10 ont introduit des complications dans le processus de migration.
Les problèmes courants de compatibilité des pilotes de périphérique sont les suivants: un pilote de périphérique 32 bits est requis pour un système d'exploitation Windows 32 bits et un pilote de périphérique 64 bits est requis pour un système d'exploitation Windows 64 bits. Les pilotes de périphérique 64 bits doivent être signés par Microsoft, car ils s'exécutent en mode noyau et disposent d'un accès illimité au matériel informatique. Pour les systèmes d'exploitation antérieurs à Windows 10, Microsoft autorisait les fournisseurs à signer eux-mêmes leurs pilotes 64 bits, en supposant que les fournisseurs avaient effectué des tests de compatibilité. Cependant, les pilotes Windows 10 64 bits doivent maintenant être signés par Microsoft. Par conséquent, les fournisseurs de périphériques doivent soumettre leurs pilotes à Microsoft pour test et approbation. Le package d'installation du pilote comprend tous les fichiers du répertoire .inf et tous les fichiers du package doivent être installés, sinon l'installation du pilote de périphérique peut échouer. Pour les versions de système d'exploitation antérieures à Windows 10, tous les fichiers nécessaires à l'installation du pilote n'étaient pas inclus dans le package, car cette exigence n'était pas systématiquement appliquée. Certains installateurs de pilotes de périphériques ont une interface utilisateur graphique , nécessitant souvent une entrée de configuration utilisateur. L'absence d'interface utilisateur ne signifie pas que l'installation du pilote de périphérique a échoué. En outre, les pilotes de périphériques Windows 10 ne sont pas autorisés à inclure une interface utilisateur. La spécification NDIS ( Network Driver Interface Specification ) 10.x est utilisée pour les périphériques réseau par le système d'exploitation Windows 10. Les pilotes de périphérique réseau pour Windows XP utilisent NDIS 5.x et peuvent fonctionner avec les systèmes d'exploitation Windows suivants, mais pour des raisons de performances, les pilotes de périphérique réseau doivent implémenter NDIS 6.0 ou version ultérieure. De même, WDDM est le modèle de pilote pour Windows Vista et plus, qui remplace XPDM utilisé dans les pilotes graphiques.
Gestionnaire de périphériques
Le Gestionnaire de périphériques est une applet du Panneau de configuration dans les systèmes d'exploitation Microsoft Windows. Il permet aux utilisateurs de visualiser et de contrôler le matériel connecté à l'ordinateur. Il permet aux utilisateurs d'afficher et de modifier les propriétés des périphériques matériels et constitue également le principal outil de gestion des pilotes de périphériques.
Critique
Le modèle de pilote Windows, bien qu'il constitue une amélioration significative par rapport au modèle de pilote VxD et Windows NT utilisé auparavant, a été critiqué par les développeurs de logiciels de pilote, notamment pour les éléments suivants:
- Les interactions avec les événements de gestion de l'alimentation et le plug and play sont difficiles. Cela peut conduire à des situations dans lesquelles les machines Windows ne peuvent pas entrer ou sortir correctement des modes de veille en raison de bogues dans le code du pilote.
- L'annulation des E / S est difficile à obtenir.
- Un code de prise en charge passe-partout complexe est requis pour chaque pilote.
- Il n'y a pas de support pour l'écriture de pilotes en mode utilisateur pur .
Il y avait également un certain nombre de préoccupations concernant la qualité de la documentation et des échantillons fournis par Microsoft.
En raison de ces problèmes, Microsoft a publié un nouvel ensemble de frameworks au-dessus de WDM, appelé Windows Driver Frameworks (WDF; anciennement Windows Driver Foundation), qui comprend le Kernel-Mode Driver Framework (KMDF) et le User-Mode Driver Framework (UMDF ). Windows Vista prend en charge à la fois le WDM pur et le plus récent WDF. KMDF est également disponible en téléchargement pour Windows XP et même Windows 2000, tandis que UMDF est disponible pour Windows XP et supérieur.
Voir également
-
Cadres de pilotes Windows (WDF)
- Framework de pilote en mode noyau (KMDF)
- Infrastructure de pilote en mode utilisateur (UMDF)
- Modèle de pilote d'affichage Windows (WDDM)
Les références
- Finnel, Lynn (2000). Examen MCSE 70-215, Microsoft Windows 2000 Server . Microsoft Press . ISBN 1-57231-903-8 .
- Oney, Walter (2003). Programmation du modèle de pilote Windows , Microsoft Press , ISBN 0-7356-1803-8 .
Liens externes
- Concepts d'entrée-sortie WDM - Cet article donne une vue d'ensemble de haut niveau des concepts d'E / S tels que définis dans le modèle de pilote Windows.
- Principes de base de l'API du pilote Windows - Cet article vous informe sur les principes de base des pilotes de carte son tels que WDM, ASIO , MME , DirectX, etc.
- Vidéo Channel 9 - Entretien avec l'équipe de gestion des périphériques et d'installation de Microsoft, couvrant principalement le Plug-and-play .
- Notes de cours sur la programmation du noyau Windows sur la Wayback Machine (archivé le 3 mars 2016) - Fragment de livre de notes de cours gratuit détaillant la création de base des pilotes Windows, la programmation en mode noyau et la gestion de la mémoire