Un client DPMI qui fournit des services resident en mode protégé (aussi appelé "TSR mode protégé")doit s'installer en utilisant l' Int 31H Fonctions 0C00H et 0C01H. Le TSR mode protégé d'abord déclare son intention de rester resident en appelant la Fonction 0C00H,fournissant à l'hôte DPMI les descripteurs de code et de données et les points d'entrée callback pour le mode protégé 16-bit et/ou 32-bit. Si le TSR ne souhaite pas fournir des services dans un mode particulier,il fournit un descripteur de code pour ce mode ne contenant que des zéro. Le TSR mode protégé alors termine et reste resident en appelant l'Int 31H Fonction 0C01H. Notez que après cet appel de fonction,le contexte original d'addressage est detruit; ses LDT et IDT n'existent plus, bien que tous les blocs de mémoire étendue qu'il possedait avant la terminaison restent alloués.
Chaque fois qu'un autre client DPMI dans la même machine virtuelle
se charge ou se termine, L'hôte DPMI inspecte sa liste de TSR mode protégé.
Si un TSR particulier a indiqué qu'il peut s'executer dans le mode du client
actif, l'hôte DPMI, alloue automatiquement deux descripteurs de LDT
dans le contexte du client actif,les initialise au valeurs specifiées dans
l'appel originel à la
Quand un nouveau client DPMI est chargé et execute le passage initial en
mode protégé, la procédure de callback appropriée dans le TSR mode protégé
doit être lancée par un FAR CALL avec AX=0
avant que l'hôte DPMI retourne au nouveau programme. Le TSR peut
alors détourner les interruptions, créer des descripteurs, ou allouer des
blocs de mémoire dans le contexte du nouveau client avant l'accès du client
aux ressources du mode protégé. Par exemple le callback de l'initialisation
donne au TSR une opportunité de s'inserer dans la chaine des handlers
pour quelconque interruption ou exception. Les TSRs sont invoqués dans
l'ordre de leur installation mais sont enlevés dans l'ordre inverse . Le
TSR doit aussi construire pour chaque client des structures de données dans
sa propre mémoire, et peut utiliser la valeur qui lui est fourniedans BX
comme un "handle" pour le client.
Le TSRdoit sortir du callback de l'initialisation avec un RETF .
De même, quand un client DPMI se termine en utilisant l'Int 21H Function 4CH ou
l'Int 31H Fonction 0C01H, la procédure
de callback du TSRdoit être amorcée par un FAR CALL avec AX=1
avant que la LDT ou la IDT du client actif ait été détruite. Le
TSR mode protégé peut alors prendre toutes les responsabilités de terminaison
du client dont le client n'est pas averti (ex: unmapping de la
mémoire physique),libérer toute ressources du mode protégé qui aurait été
acquise au nom du client (ex: propriété de la mémoire partagée),
et desallouer toute structure de donnée . Le callback de terminaison
doit finir avec un RETF et indiquer une action à l'hôte DPMI
de la manière suivante:
Int 31H Fonctions 0C00H et 0C01H ne peuvent être utilisées que par les clients
DPMIqui ont l'intention de fournir des services résidents aux autres clients
en mode protégé . Si l'objectif est seulement de fournir des services résidents
aux programmes en mode réel, le client doit utiliser les services de traduction
Int 31H Fonction 0300H pour appeler L'Int 31H
Fonction 31H de DOS directement.
CS sélecteur éxecutable qui désigne la même
mémoire que le descripteur de code dans l'Int 31H
Fonction 0C00H structure de données pour le mode courant (16-bit ou
32-bit) (E)IP Offset specifié dans l' Int 31H Fonction 0C00Hstructure de données
pour le mode courant (16-bit ou 32-bit) DS selecteur de données qui désigne la même
mémoire que descripteur de données spécifié dans l'Int 31H Fonction 0C00H structure de données pour
le mode courant (16-bit ou 32-bit) ES 0 FS 0 GS 0 AX Raison du callback: 0=client DPMI
se charge, 1=client DPMI se termine BX handle unique pour le client dans la
machine virtuelle
Carry = 0 pour garder les services residents en mémoire, ou
Un fournisseur de services residents doit seulement être enlevé de la mémoire
du dernier client de la machine virtuelle qu'ils emploient.
Carry = 1 pour enlever les services residents de la mémoire