Alloue Bloc de Mémoire Linéaire
Alloue un bloc de mémoire linéaire aligné à la page.
L'adresse du bloc doit être specifiée par le client,
et les pages dans le bloc doivent être engagées ou non engagées.
Appel avec
AX = 0504H
EBX = adresse linéaire du bloc désiré
ou zéro si adresse linéaire non spécifiée
ECX = taille du bloc (octets, doit être non nulle)
EDX = flags
Bit | Signification |
0 | 0 = crée des pages non engagées |
1 =crée des pages engagées |
1-31 | reservé, doit être zéro |
Retourne
si la fonction réussit
Carry flag = 0
EBX = adresse linéaire du bloc mémoire
ESI = handle du bloc mémoire
si la fonction échoue
Carry flag = 1
AX = code d'erreur
8001H | fonction non supportée (hôte 16-bit) |
8012H | mémoire linéaire indisponible |
8013H | mémoire physique indisponible |
8014H | backing store indisponible |
8016H | handle indisponible |
8021H | valeur invalide (ECX = 0) |
8025H | adresse linéaire invalide (EBX non aligné à la page ) |
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.
- Le bloc alloué est toujours aligné à la page. Si une adresse linéaire
spécifiquen'est pas requise (EBX = 0), l'hôte DPMI alloue le bloc mémoire
à n'importe quelle adresse linéaire alignée à la page. Si une adresse
spécifique est requise (EBX non nul), l'hôte alloue le bloc ou retourne
un code d'erreur 8012H (mémoire linéaire
indisponible).
- L'Int 31H Fonction 0501H, qui peut être
aussi utilisée pour allouer bloc de mémoire linéaire,
n'aligne pas necessairement les blocs et n'a pas le pouvoir de créer
des pages non engagées ou d'allouer un bloc à une adresse linéaire
spécifique.