Section courante

A propos

Section administrative du site

DosAllocMem

Allocation mémoire
DOSCALLS.DLL os2.h

Syntaxe

APIRET DosAllocMem( PPVOID pBaseAddress, ULONG ulObjectSize, ULONG ulAllocationFlags );

Paramètres

Nom Description
pBaseAddress Ce paramètre permet d'indiquer un pointeur vers une variable recevant l'adresse de base d'un objet d'allocation de mémoire privé.
ulObjectSize Ce paramètre permet d'indiquer la taille en octets d'un bloc de mémoire devant être alloué.
ulAllocationFlags Ce paramètre permet d'indiquer les drapeaux de description d'allocation d'attribut pour l'accès protégé d'un bloc de mémoire privé. Voici les valeurs pouvant être combiné :
Constante Valeur Description
PAG_READ 0x00000001 Cette valeur permet d'indiquer qu'il faut autorisé un accès en lecture au pages de bloc de mémoire.
PAG_WRITE 0x00000002 Cette valeur permet d'indiquer qu'il faut autorisé un accès l'écriture au pages de bloc de mémoire.
PAG_EXECUTE 0x00000004 Cette valeur permet d'indiquer qu'il faut autorisé un accès d'exécution au pages de bloc de mémoire.
PAG_GUARD 0x00000008 Cette valeur permet d'indiquer qu'il faut autorisé un accès système au pages de bloc de mémoire afin qu'un gardien de processus d'exception puisse y accéder.
PAG_COMMIT 0x00000010 Cette valeur permet d'indiquer que tous les bloc de mémoire privé sont initialisés.
OBJ_TILE 0x00000040 Cette valeur permet de forcer l'allocation d'un bloc de mémoire dans les 512 premier mégaoctets de l'espace d'adressage virtuel.

Retour

Valeur Constante Description
0 NO_ERROR Cette valeur permet d'indiquer que l'opération s'est correctement effectué
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.

Description

Cette fonction permet d'utiliser une allocation d'objet de mémoire privé dans les limites d'espace d'adressage virtuel.

Remarques

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(DosAllocMem(&BaseAddress, 8000, PAG_WRITE | PAG_EXECUTE)) {
  9.         case NO_ERROR: printf("Tout va bien !");break;
  10.         case ERROR_NOT_ENOUGH_MEMORY: printf("Erreur : La limite de mémoire système est atteinte.");break;
  11.         case ERROR_INVALID_PARAMETER: printf("Erreur : Un ou plusieurs des paramètres contient une valeur illégale.");break;
  12.         case ERROR_INTERRUPT: printf("Erreur : Une erreur d'interruption s'est produite.");break;
  13.     }
  14. }

Voir également

Langage de programmation - C pour OS/2 - DosAllocSharedMem
Langage de programmation - C pour OS/2 - DosFreeMem
Système d'exploitation - OS/2 - Introduction

Dernière mise à jour : Lundi, le 19 juillet 2010