Change la Taille d'un Bloc de Mémoire
![[0.9]](../09.gif)
Change la taille d'un bloc de mémoire precedemment alloué avec
les fonctions Alloue Bloc de Mémoire (Int
31H Fonction 0501H) ou Alloue Bloc de Mémoire Linéaire
(Int 31H Fonction 0504H).
Appel avec

AX = 0503H
BX:CX = nouvelle taille du bloc (octets, doit être non-nulle)
SI:DI = handle du bloc de mémoire
Retourne

si la fonction réussit
Carry flag = 0
BX:CX = nouvelle adresse linéaire du bloc de mémoire
SI:DI = nouveau handle du bloc de mémoire
si la fonction échoue
Carry flag = 1
AX = code d'erreur
8012H | mémoire linéaire indisponible |
8013H | mémoire physique indisponible |
8014H | backing store indisponible |
8016H | handle indisponible |
8021H | valeur invalide(BX:CX = 0) |
8023H | handle invalide(in SI:DI) |
Notes
- Après le retour de cette fonction, le precedent handle du
bloc de mémoire est invalide et ne doit pas être utilisé.
- Quand elle augmente la taille d'un bloc, cette fonction crée
toujours des pages engagées. Quand elle diminue la taille d'un bloc,
cet appel doit correctement libérer tous les types de page possible
(engagées,non engagées,et projetées).
L'adresse linéaire et le handle du bloc de mémoire peut
changer en tant que resultat de cet appel.
- Il est de la responsabilité du client de mettre à jour
tout descripteur qui projète le bloc de mémoire avec la nouvelle adresse
linéaire après avoir changé la taille du bloc.
- Cette fonction retourne une erreur si le client tente de fixer
la taille d'un bloc de mémoire à zéro octets.