Fixe Attributs de Page
![[1.0]](../10.gif)
Fixe les Attributs d'une ou plusieurs pages dans un bloc mémoire
linéaire précedemment alloué avecInt 31H Fonction
0504H. Cette fonction peut être utilisée pour changer une page engagée
ou une page projetée en page non engagée , changer une page non engagée
ou projetée en page engagée, ou modifier le bit lecture/écriture et
optionellement les bits "accessed" and "dirty" sur une page.
Appel avec

AX = 0507H
ESI = handle du bloc de mémoire
EBX = offset de la page(s) dans le bloc de mémoire dont
les attributs ont à être modifiés
ECX = nombre de pages
ES:EDX =selecteur:offset d'un buffer qui contient les attributs de page,
1 word (16-bits) par page (voir Note)
Retourne

si la fonction réussit
Carry flag = 0
si la fonction échoue
Carry flag = 1
AX = code d'erreur
8001H | fonction non supportée (hôte 16-bit ) |
8002H | état invalide (page dans le mauvais état pour la requète) |
8013H | mémoire physique indisponible |
8014H | backing store indisponible |
8021H | valeur invalide(requète illégale dans les bits
0-2 d'un ou plusieurs mots d'attribut de page) |
8023H | handle invalide(dans ESI) |
8025H | adresse linéaire invalide(étendue specifiée
en dehors du bloc specifié) |
ECX = nombre de pages dont les attributs ont étés fixés
Notes
- Un hôte DPMI 1.0 qui est uniquement 16-bit ne supportera pas
cette fonction.
- Un client 16-bit d'un hôte DPMI 32-bit 1.0 peut utiliser
cette fonction.
- Si EBX n'est pas aligné, il sera arrondi à la limite inférieure
de la limite de la page inférieure suivante.
- Une page non engagée peut être crée à partir de:
- une page engagée, en libérant la mémoire physique ou le" backing
store" ("l'arrière-boutique" N.d.T.) alloué à la page;
- une page projetée, en la marquant non engagée ; ou une page non engagée
en ne faisant rien .
- Une page engagée peut être crée à partir de:
- une page non engagée or projetée , en allouant de la mémoire physique
ou le "backing store" (avec un contenu indéfini ou rempli de zéros) pour la
page; ou
- Une page engagée;en ne faisant rien .
- Le mot (16-bits) d'attribut specifié pour une page a le format
suivant (bits 3-6 ont un sens seulement si la page a été crée engagée
ou ses attributs ont été modifiés, c.a.d que la valeur des bits
0-2 de l'attribut de page est 1 ou 3):
Bits | Signification |
0-2 | page type (0-7) |
Valeur | Sens |
0 | crée des pages non engagées |
1 | crée des pages engagées |
2 | non autorisé |
3 | modifie les attributs sans changer le type de page |
4-7 | non autorisé |
3 | 0 = page en lecture seule |
1 = page en lecture/écriture |
4 | 0 = ne modifie pas les bits accessed/dirty de cette page |
1 = fixe les bits accessed/dirty bits comme specifié dans les bits 5-6 |
5 | 0 = marque page comme non accedée (si bit 4=1) |
1 = marque page comme accedée (si bit 4=1) |
6 | 0 = marque page comme non "dirty" (si bit 4=1) |
1 = marque page comme "dirty" (si bit 4=1) |
7-15 | reservé, doit être zéro |
- Cette fonction, et les fonctions optionelles
(Int 31H Fonctions 0508H
et 0509H), sont les seules facons de changer
le type d'une page dans un bloc de mémoireexistant .
- Le bit de page en lecture/écriture, et optionellement
les bits "accessed" et "dirty", peuvent être modifiés dans une page
existante quand elle a été initiallement crée à partir d'une page
non engagée ou projetée. Toutefois,les bits "accessed" et "dirty" sont
ignorés si l'hôte ne les supporte pas . Voir Int 31H Fonction 0401H.
- Les fautes de page visible (fautes de page qui peuvent être apréhendées
par un gestinnaire d'exception client) peuvent se produire seulement
pour les pages non engagées ou lecture seule.