Le client en mode protégé se termine en exécutant l'Int 21H en
mode protégé, copiant la valeur 4CH dans le registre AH et un code de retour
dans le registre AL. (C'est l'imitation de l'Int 21H Fonction 4CH
utilisée par les applications DOS en mode réel.) Le client a les responsabilités
suivantes avant de terminer:
Quand l'hôte DPMI detecte une terminaison par Int 21H Fonction 4CH,
il prend les mesures suivantes:
- tous les blocs de memoire étendue precedemment alloué par Fonction 0501H ou 0504H sont deverouillés et libérés(c'est le seul
nettoyage requis par un hôte DPMI V 0.9);
- La table locale des descripteurs (LDT)du client est libérée dans sa
totalité par les hôtes DPMI 1.0 . (Un client DPMI version 0.9 doit nettoyer
ses propres descripteurs de segment avant de terminer car certain hôtes 0.9
ne s'occupent pas de cette tâche si le client n'est pas le premier...)
;
- Les adresses physiques converties en adresses linéaires Int 31H Fonction 0800H sont liberées;
- Les mappings crées with Int 31H Fonctions
0508H ou 0509H sont détruits;
- La table locale des interruptions (IDT)du client est libérée dans sa
totalité et tous les gestionnaires d'exceptions installés par Fonctions 0203H, 0212H et 0213H sont desinstallés;
- toutes les zones de mémoire en mode réel qui etaient deverouillées par Fonction 0602H sont revérouillées;
- tous les callbacks alloués par Fonction 0303H sont desalloués;
- l'allocation des blocs de memoire partagée et la sérialisation
sont liberées;
- tous les point d'arrèt poses avecFonction 0B00H sont effaces;
- L'état du coprocesseur(s'il existe..)est restauré au defaut.
Une fois que l'hôte DPMI a fini les activités de nettoyage listées plus
haut,il repasse en mode réel et redeclenche l'Int 21H Fonction 4CH
transmettant le code de retour du client DPMI au DOS.
DOS peut alors terminer le client comme un processus mode réel en libérant
la mémoire (deja allouée par l'Int 21H Fonction
48H ou par DPMI Fonction 0100H), vidant
les buffers, refermant les fichiers , and so on.
Les clients doivent terminer seulement de leur thread d'exécution principal,
et ne doivent pas appeler l'Int 21H Function 4CH mode protégé depuis
un gestionnaire d'interruption matérielle,un gestionnaire d'exception ,
ou un callback mode réel . Le client peut néanmoins se terminer depuis
une routine en mode protégé qui aurait été introduite par un changement
de mode "raw" . Les clients qui souhaitent rester résidents doivent utiliser
la
Fonction DPMI 0C01H plutot que l' Int 21H Function 31H.
Note: Bien que l'hôte DPMI gère l' Int 21H Fonction 4Ch
en mode protégé, il en ignore toutes les autres fonctions. Les DOS
Extenders typiquement installent un gestionnaire de l'interruption 21H
de leur cru de manière à intercepter et servir les appels aux fonctions
DOS d'une application en mode protégé ; ainsi, le gestionnaire Int 21H
du DOS Extender recevra toujours la Fonction 4CH (requète de fin
de programme) en premier. Le DOS Extender doit réaliser tout le
nettoyage lui-même puis transmettre la requète de fin à l'hôte DPMI en
le chainant au prpriétaire original du vecteur Int 21H en mode protégé.