Section courante

A propos

Section administrative du site

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 :

  1. #define INCL_DOSERRORS
  2. #define INCL_DOSMEMMGR
  3. #include "os2.h"
  4. #include "stdio.h"
  5.  
  6. void main(void) {
  7.     PVOID BaseAddress;
  8.     switch(DosSetMem( BaseAddress, 16384, PAG_COMMIT | PAG_READ)) {
  9.         case NO_ERROR: printf("Tout va bien !");break;
  10.         case ERROR_ACCESS_DENIED: printf("Erreur : Une erreur d'accès refusé s'est produite.");break;
  11.         case ERROR_NOT_ENOUGH_MEMORY: printf("Erreur : La limite de mémoire système est atteinte.");break;
  12.         case ERROR_INVALID_PARAMETER: printf("Erreur : Un ou plusieurs des paramètres contient une valeur illégale.");break;
  13.         case ERROR_INTERRUPT: printf("Erreur : Une erreur d'interruption s'est produite.");break;
  14.         case ERROR_LOCKED: printf("Erreur : Une erreur de verroue.");break;
  15.         case ERROR_INVALID_ADDRESS: printf("Erreur : Une erreur d'adresse invalide.");break;
  16.         case ERROR_CROSSES_OBJECT_BOUNDARY: printf("Erreur : Une erreur de limite d'objet croisé s'est produit.");break;
  17.     }
  18. }

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