# VxD

Pour les utilisateurs de Microsoft Windows, un VxD est un pilote de périphérique virtuel. Un VxD s’exécute sous les systèmes d’exploitation Windows 3.x, Windows 95 et 98 et possède les droits d’accès à toute la mémoire du noyau, des processus actifs, ainsi qu’un accès direct au matériel.

## Pourquoi des pilotes virtuels

Antérieurement à l’arrivée de Windows, les applications DOS communiquaient fréquemment et directement avec le matériel, en répondant à des interruptions, lisant et écrivant la mémoire du périphérique. Chaque application prévoyait d’avoir un accès total aux divers composants. Windows 2.1 386 et plus permettaient à plusieurs systèmes DOS d’opérer en même temps. Ceci était possible en exécutant chaque application dans sa propre fenêtre. Pour partager les ressources arbitraires physiques à travers ces machines virtuelles, Microsoft a intégré des périphériques virtuels dans Windows 3.0. Ces pilotes répondaient au problème de créer plusieurs appels au matériel en les interceptant et en y répondant à la place du vrai matériel.
Au lieu d’un port matériel représentant un périphérique réel, le pilote représentait un périphérique « virtuel » qui répondait à sa place et qui était contrôlé par le système d’exploitation.

## Origine du nom

Le nom VxD provient du fait que la plupart des fichiers de ces pilotes virtuels avaient des noms ressemblant à « v ... d.386 », dans Windows 3.x (pour Virtual ... Driver). Par exemple, vjoyd.386 (joystick), vmm.386 (directeur de la mémoire) et ainsi de suite. Les VxDs ont habituellement l’extension de fichier .386 sous Windows 3.x et .vxd sous Windows 95. Les VxDs écrits pour Windows 3.x peuvent être utilisés sous Windows 95 mais l’inverse n’est pas possible.

## Privilèges accordés par le noyau

Dans les systèmes d’exploitation Windows en commençant par Windows 95, les applications ordinaires s’exécutent en mode protégé à un niveau de privilège « 3 », aussi appelé « ring (anneau) » 3. Cela veut dire qu’ils ont un accès limité à la mémoire et au matériel, comme les fenêtres DOS sous Windows 3.x. Les VxD, d’un autre côté, s’exécutent à un niveau de privilège « 0 » ou « ring (anneau) » 0, c’est-à-dire avec un plein accès à la mémoire et au matériel.
Par conséquent, dans Windows 95 et 98, n’importe quelle application ayant besoin d’un accès complet à la mémoire et au matériel installera un VxD. De tels VxD ne pilotent pas le périphérique, ils permettent simplement à une application de faire ce qu’elle veut. Par exemple, les logiciels anti-virus installent habituellement un VxD. Même le noyau lui-même utilise des VxD pour des tâches comme la gestion de la mémoire. Ce paradoxe apparent est dû au fait que les VxD sont des pilotes de périphériques des anciens Windows et des composantes dynamiquement chargeables au niveau noyau du système d’exploitation.
VxD n’est plus supporté par les versions récentes de Windows. Les pilotes périphériques pour Windows 2000, et Windows XP utilisent les pilotes Windows Driver Model (Modèle de Pilote Windows) (WDM), les versions ultérieures, Windows Vista et Windows 7, font appel à la Windows Driver Foundation (en) (subdivisée en Kernel-Mode Driver Framework (en) et User-Mode Driver Framework (en)).