Interruption 21h |
Fonction 31h |
Mettre fin au programme en passant en mode résident (TSR) |
---|---|---|
DOS 2.0+, OS/2, Windows NT |
Description
Cette fonction permet de mettre fin au programme en passant en mode résident (TSR : Terminate and Stay Resident). Ainsi, il metttre fin à l'exécution du programme en cours d'exécution, en passant un code retour au processus parent, mais réserve une partie ou la totalité de la mémoire du programme afin qu'elle ne soit pas superposée par le prochain programme transitoire à charger. Le système d'exploitation DOS effectue ensuite les actions suivantes :
- Les tampons de fichiers sont vidés et tous les descripteurs ouverts pour les fichiers ou les périphériques appartenant au processus sont fermés.
- Le vecteur de gestionnaire de terminaison (Interruption 22h) est restauré à partir de l'adresse PSP:000Ah.
- Le vecteur gestionnaire Ctrl+C (Interruption 23h) est restauré à partir de PSP:000Eh.
- A partir de la version 2.0 du système d'exploitation DOS, le vecteur de gestionnaire d'erreur critique (Interruption 24h) est restauré à partir de l'adresse PSP:0012h.
- Le contrôle est transféré au gestionnaire de terminaison. Si le programme revient à l'interpréteur de commande, généralement COMMAND.COM, il contrôle les transferts vers la partie résidente et la partie transitoire et est rechargée si nécessaire. Si un fichier de traitement par lot (.BAT) est en cours, la ligne suivante du fichier est récupérée et interprétée; sinon, un prompt est émise pour la commande utilisateur suivante.
Entrée
Registre | Valeur ou description |
---|---|
AH | 31h |
AL | Ce registre permet d'indiquer le code de fin |
DX | Ce registre permet d'indiquer le nombre de paragraphes (zone de 16 octets) à réserver |
Sortie
Aucune
Remarques
- Cet appel de fonction est généralement utilisé pour permettre aux utilitaires, pilotes ou gestionnaires d'interruptions écrits par l'utilisateur d'être chargés en tant que programmes .COM ou .EXE ordinaires, puis de rester résidents. L'entrée ultérieure du code se fait via une interruption matérielle ou logicielle.
- Cette fonction tente de régler le bloc d'allocation de mémoire initial à la longueur en paragraphes spécifiée dans le registre DX. Si d'autres blocs de mémoire ont été demandés par l'application à l'aide de l'interruption 21h, fonction 48h, ils ne seront pas libérés par cette fonction.
- Les autres méthodes pour effectuer une sortie finale sont : Interruption 20h, Interruption 21h, fonction 00h, Interruption 21h, fonction 4Ch, Interruption 27h.
- Le code retour peut être récupéré par un processus parent avec l'interruption 21h, fonction 4Dh (Get Return Code). Il peut également être testé dans un fichier de commandes avec une instruction IF ERRORLEVEL. Par convention, un code retour de 0 indique une exécution réussie et un code retour différent de zéro indique une erreur.
- Cette fonction ne doit pas être appelée par les programmes .EXE étant chargés à l'extrémité supérieure de la zone de programme transitoire (c'est-à-dire liés au commutateur /HIGH) car celui-ci réserve la mémoire normalement utilisée par la partie transitoire de l'interpréteur de commande COMMAND.COM. Si l'interpréteur de commande COMMAND.COM ne peut pas être rechargé, le système échouera.
- A partir de la version 2.0 du système d'exploitation DOS, cette fonction doit être utilisée de préférence à l'interruption 27h car elle prend en charge les codes retour, permettant de réserver de plus grandes quantités de mémoire et n'exige pas que le registre CS contienne le segment du préfixe de segment de programme.
- A partir de la version 3.0 du système d'exploitation DOS, si le programme s'exécute sur un réseau, il doit supprimer tous les verrous qu'il a placés sur les régions de fichiers avant de se terminer.
- Les adresses des interruptions suivantes sont restaurées :
Interruption | Description |
---|---|
22h | Cette interruption est utilisé pour les processus de terminaison d'un programme |
23h | Cette interruption est utilisé pour la gestion des Ctrl+C. |
24h | Cette interruption est utilisé pour la gestion des erreurs critiques. |
Références
La Bible du PC: Programmation système - Sixième Edition, Edition Micro-Application, Michael Tischer, 1996, ISBN: 2-7429-0544-8, page 1516.
Aide-mémoire des interruptions du MS-DOS, Edition Marabout, Philippe Mercier, 1990, ISBN: 2-501-01297-6, page 187 à 190.
Dernière mise à jour : Jeudi, le 3 mars 2016