Section courante

A propos

Section administrative du site

DosAllocSharedMem

DOS : Alloue de la mémoire partagé
DOSCALLS.DLL os2.h

Syntaxe

APIRET DosAllocSharedMem( PPVOID pBaseAddress, PSZ pszName, ULONG ulObjectSize, ULONG ulFlags );

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 partagé.
pszName Ce paramètre optionnel permet d'indiquer la chaîne de caractères d'un nom associé avec le bloc de mémoire partagé.
ulObjectSize Ce paramètre permet d'indiquer la taille du bloc de mémoire à allouer.
ulFlags 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 partagé. 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.
OBJ_GETTABLE 0x00000100 Cette valeur permet que l'objet de mémoire peut être accessible par les autres projets.
OBJ_GIVEABLE 0x00000200 Cette valeur permet que l'objet de mémoire peut être fournir l'accès pour autre projet, en utilisant DosGiveSharedMem.

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.
123 ERROR_INVALID_NAME Cette valeur permet d'indiquer qu'une erreur de nom invalide s'est produite.
183 ERROR_ALREADY_EXISTS Cette valeur permet d'indiquer qu'une erreur de nom déjà existante s'est produite.

Description

Cette fonction permet d'utiliser l'allocation d'objet de mémoire partagé dans les limites d'espaces 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(DosAllocSharedMem( &BaseAddress, "\\SHAREMEM\\BLOCK.DAT", 16384, PAG_WRITE | PAG_READ | PAG_COMMIT)) {
  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.         case ERROR_INVALID_NAME: printf("Erreur : Une erreur de nom invalide s'est produite.");break;
  14.         case ERROR_ALREADY_EXISTS: printf("Erreur : Une erreur de nom déjà existante s'est produite.");break;
  15.     }
  16. }

Voir également

Langage de programmation - C pour OS/2 - DosAllocMem
Langage de programmation - C pour OS/2 - DosFreeMem
Langage de programmation - C pour OS/2 - DosGetNamedSharedMem
Langage de programmation - C pour OS/2 - DosGetSharedMem
Langage de programmation - C pour OS/2 - DosGiveSharedMem
Système d'exploitation - OS/2 - Introduction

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