Version 1.0
INDEX




Tut1 : Driver de Dispositif Virtuel, Elémentaire (Virtual Device Driver Basics).
Tut2 : Manager de Machine Virtuelle (VMM), (Virtual Machine Manager).
Tut3 : Squelette d'un VxD, (Virtual Device Driver Skeleton).
Tut4 : Programmation d'un VxD : élémentaire, (VxD Programming: Primer).
Tut5 : Exemple de VxD: MessageBox, (VxD Example: MessageBox).
Tut6 : L'Interface DeviceIoControl, (DeviceIoControl Interface).
Tut7 : Temps d'Application et Functions du Shell, (Application Time and Shell Functions).
Tut8 : La Structure Client Register, (Client Register Structure).
Tut9 : Le Manager de Mémoire Virtuelle : 8086, (Virtual 8086 Memory Manager).



Summary:


VM: (Virtual Machine) Une Machine Virtuelle. Mais commençons par la Machine Réelle, c'est votre ordinateur. Normalement pour pouvoir faire tourner 2 programmes il faudrait deux machines donc deux ordinateurs (et ça c'est vrai sous Winows 3.xx. On a trouvé la parade avec Windows 9.xx, on a inventé les Machines Virtuelles. Votre ordinateur réel ou physique est patitionné en plusieurs autres machines qui ne sont plus physiques mais Virtuelles. Chaque VM s'occupe de faire fonctionner un seul programme. Ainsi sur un unique ordinateur physique on peut faire fonctionner plusieurs programmes chacun d'eux dans une Machine Virtuelle.

VMM: (Virtuals Machines Manager) Le Manager de Machines Virtuelles est un superviseur qui contrôle la totalité des VMs (des Machines Virtuelles). Si par exemple plusieurs Machines Virtuelles fonctionnent en parallèle (en même temps) sur votre ordinateur, alors le VMM en fait fonctionner une seule pendant un bref instant puis la suspend pour faire fonctionner une suivante et ainsi de suite et revient à la toute première. Chaque temps de fonctionnement des VMs étant si bref qu'on à l'impression qu'elles fonctionnent réellement toutes ensembles. Mais c'est faux, elles fonctionnent seulement les unes après les autres ultra-rapidement.

VxD: (Virtual Device Driver) Est un 'Driver de Device Virtuel' ou encore un 'Driver de Matériel Virtuel'. Mais avant un Driver c'est un Pilote, par exemple quand vous installez une nouvelle souris (c'est un matériel ou Device) il lui faut un petit programme (le Driver) pour qu'elle fonctionne. Ce Driver sert de liaison entre les Machines Virtuelles (VMs) et le matériel qui lui est réel. En effet comment une seule souris pourrait fonctionner avec plusieurs Machines Virtuelles ? C'est le VxD le Driver de Matériel Virtuel qui se comporte comme plusieurs souris virtuelles et coordonne les actions de la souris réelle avec toutes les Machines Virtuelles. 'x' représente le Device (le Matériel), le VxD de la souris est donc nommé 'Virtual Mouse Driver'

Interruption: Puisque plusieurs programmes tournent en parallèles sur plusieurs Machines Virtuelles (VMs), le Manager de Machines Virtuelles (VMM) interrompt le cours de ces programmes à tour de rôle pour continuer le déroulement d'un autre et ainsi de suite. Après chaque interruption le VMM reprend le cours du programme à l'endroit où il l'avait interrompu.

Structure 'Client Register': Cette Structure n'est en faite que l'ensemble de tous les registres du programme qu'on a interrompu. Lorsque le VMM interrompt le premier programme, tous les registres de ce programme sont sauvegardés dans cette structure 'Client Register' (et chacun des programme possède la sienne). Le VMM exécute le programme n°2 donc les registres sont modifiés. Et quand le VMM retourne au programme n°1 il peut retrouver la totalité de l'état de ses registres dans cette structure et ainsi continuer le programme exactement là où il en était.

Ring-0 et Ring-3: La presque totalité des programmes fonctionne en Ring-3, ça signifie que pour un programme habituel (en Ring-3) il existe un programme de plus haut niveau (Ring-0) qui contrôle que tout est correcte. Par exemple vous créez un programme normal mais malheureusement il a un bug, en le lançant on vous informe qu'il y a une erreur dans votre programme. C'est le maître Ring-0 qui vous en a informé. Attention pour un programme Ring-0 si vous faites une erreur personne n'est là pour le contrôler donc ça peut devenir très dangeureux. L'avantage d'un programme Ring-0 c'est que tout lui est permi il a accès à vraiment tout. Là où un programme Ring-3 échoue parce qu'il ne peut pas effacer ou déplacer un fichier dll ou system appartenant à Windows, un programme Ring-0, lui, peut le faire sans qu'un message d'avertissement le lui interdise car il n'est pas contrôlé par qui que ce soit. Les VxDs fonctionnent au niveau Ring-0.



Assembles_VxD: est un petit programme batch (*.bat) qui vous servira a assembler vos propres VxDs. Une petite restriction quand même, vous devez créer un repertoire d'assemblage (du nom que vous voulez) sous C:\Masm32, le mien s'appelle '_Essai' donc pour assembler mes VxDs je dois placer Assembles_VxD ansi que le VxD à assembler dans le répertoire C:\Masm32\_Essai.