DosSetMem |
DOS : Fixe la mémoire |
---|---|
DOSCALLS.DLL | os2.h |
Syntaxe
APIRET DosSetMem( PVOID pBaseAddress, ULONG ulRegionSize, ULONG ulAttributeFlags ); |
Paramètres
Nom | Description | ||
---|---|---|---|
pBaseAddress | Ce paramètre permet d'indiquer l'adresse de base d'un bloc de mémoire à changer. | ||
ulRegionSize | Ce paramètre permet d'indiquer la taille en octets d'un rang de pages à changer. | ||
ulAttributeFlags | Ce paramètre contient les attributs de drapeau de décrivant l'allocation et la protection d'accès d'un bloc de mémoire de requête. Les valeurs peuvent être combiné : | ||
Constante | Valeur | Description | |
PAG_READ | 0x00000001 | Cette valeur permet d'indiquer que l'accès en lecture de pages mémoire est autorisé. | |
PAG_WRITE | 0x00000002 | Cette valeur permet d'indiquer que l'accès en écriture de pages mémoire est autorisé. | |
PAG_EXECUTE | 0x00000004 | Cette valeur permet d'indiquer que l'accès en exécution de pages mémoire est autorisé. | |
PAG_GUARD | 0x00000008 | Cette valeur permet d'indiquer que l'accès à des pages mémoires à cause qu'un gardien est appelé par une exception est autorisé. | |
PAG_COMMIT | 0x00000010 | Cette valeur permet d'indiquer que les pages de mémoires ont des obligations. | |
PAG_DECOMMIT | 0x00000020 | Cette valeur permet d'indiquer que les pages de mémoires n'ont pas des obligations. | |
PAG_DEFAULT | 0x00000400 | Cette valeur permet d'indiquer que les pages mémoires ont les mêmes protection d'accès que l'allocation original dans l'espace d'adressage du processus. |
Retour
Valeur | Constante | Description |
---|---|---|
0 | NO_ERROR | Cette valeur permet d'indiquer que l'opération s'est correctement effectué |
5 | ERROR_ACCESS_DENIED | Cette valeur permet d'indiquer qu'une erreur d'accès refusé s'est produite. |
8 | ERROR_NOT_ENOUGH_MEMORY | Cette valeur permet d'indiquer que la limite de mémoire système est atteinte. |
87 | ERROR_INVALID_PARAMETER | Cette valeur permet d'indiquer qu'un ou plusieurs des paramètres contient une valeur illégale. |
95 | ERROR_INTERRUPT | Cette valeur permet d'indiquer qu'une erreur d'interruption s'est produite. |
212 | ERROR_LOCKED | Cette valeur permet d'indiquer une erreur de verroue. |
487 | ERROR_INVALID_ADDRESS | Cette valeur permet d'indiquer une erreur d'adresse invalide. |
32798 | ERROR_CROSSES_OBJECT_BOUNDARY | Cette valeur permet d'indiquer une erreur de limite d'objet croisé s'est produit. |
Description
Cette fonction permet d'appliquer ou désappliquer des pages d'allocations de mémoire.
Exemple
Voici un simple exemple montrant comme appeler cette API avec WatCom C++ for OS/2 :
- #define INCL_DOSERRORS
- #define INCL_DOSMEMMGR
- #include "os2.h"
- #include "stdio.h"
-
- void main(void) {
- PVOID BaseAddress;
- switch(DosSetMem( BaseAddress, 16384, PAG_COMMIT | PAG_READ)) {
- case NO_ERROR: printf("Tout va bien !");break;
- case ERROR_ACCESS_DENIED: printf("Erreur : Une erreur d'accès refusé s'est produite.");break;
- case ERROR_NOT_ENOUGH_MEMORY: printf("Erreur : La limite de mémoire système est atteinte.");break;
- case ERROR_INVALID_PARAMETER: printf("Erreur : Un ou plusieurs des paramètres contient une valeur illégale.");break;
- case ERROR_INTERRUPT: printf("Erreur : Une erreur d'interruption s'est produite.");break;
- case ERROR_LOCKED: printf("Erreur : Une erreur de verroue.");break;
- case ERROR_INVALID_ADDRESS: printf("Erreur : Une erreur d'adresse invalide.");break;
- case ERROR_CROSSES_OBJECT_BOUNDARY: printf("Erreur : Une erreur de limite d'objet croisé s'est produit.");break;
- }
- }
Voir également
Langage de programmation - C pour OS/2 - DosAllocMem
Langage de programmation - C pour OS/2 - DosAllocSharedMem
Langage de programmation - C pour OS/2 - DosQueryMem
Système d'exploitation - OS/2 - Introduction
Dernière mise à jour : Lundi, le 19 juillet 2010