Prototype
E_RTN EMemory::SizeGet( ulonglong *pullSize,
ulonglong ullOffset );

Cette fonction calcule et retourne la taille d'espace de travail disponible depuis un offset jusqu'à la fin de l'espace de travail.

La valeur de l'offset doit toujours être située dans l'espace de travail ou à la limite finale externe sinon la fonction retourne une erreur.

 

Argument

ulonglong *pullSize

adresse d'une variable de type ulonglong où sera copiée le nombre d'octets disponible depuis l'offset jusqu'à la fin de l'espace de travail.

Si cette information ne vous intéresse pas cet argument peut être NULL (la fonction ne retournera pas d'erreur à ce propos).

ulonglong ullOffset

offset de départ de calcul de la taille disponible.

 

Retour

E_RTN

voir la section retour de la librairie Eclat.

 

Exemple

Description :

Affichage de la taille disponible depuis un offset de trois objets EMemory, l'un vièrge, l'un vide et le dernier alloué de 5 octets.

Code :

EMemory eMem0; // objet EMemory vièrge
EMemory eMem1( 0 ); // objet EMemory vide
EMemory eMem2( 5 ); // objet EMemory disponible
ulonglong ullSize;

eMem0.Trace( _T("eMem0") );
eMem1.Trace( _T("eMem1") );
eMem2.Trace( _T("eMem2") );

if ( eOk( eMem0.SizeGet( &ullSize, 0 ) ) )
  ETrace::DoEx( _T("Taille disponible depuis l'offset 0 de l'objet eMem0 = %I64u.\n"), ullSize );
else
  ETrace::Do( _T("** Erreur ** L'offset 0 de l'objet eMem0 est hors limite.\n") );

if ( eOk( eMem0.SizeGet( &ullSize, 1 ) ) )
  ETrace::DoEx( _T("Taille disponible depuis l'offset 1 de l'objet eMem0 = %I64u.\n"), ullSize );
else
  ETrace::Do( _T("** Erreur ** L'offset 1 de l'objet eMem0 est hors limite.\n") );


if ( eOk( eMem1.SizeGet( &ullSize, 0 ) ) )
  ETrace::DoEx( _T("Taille disponible depuis l'offset 0 de l'objet eMem1 = %I64u.\n"), ullSize );
else
  ETrace::Do( _T("** Erreur ** L'offset 0 de l'objet eMem1 est hors limite.\n") );

if ( eOk( eMem1.SizeGet( &ullSize, 1 ) ) )
  ETrace::DoEx( _T("Taille disponible depuis l'offset 1 de l'objet eMem1 = %I64u.\n"), ullSize );
else
  ETrace::Do( _T("** Erreur ** L'offset 1 de l'objet eMem1 est hors limite.\n") );


if ( eOk( eMem2.SizeGet( &ullSize, 0 ) ) )
  ETrace::DoEx( _T("Taille disponible depuis l'offset 0 de l'objet eMem2 = %I64u.\n"), ullSize );
else
  ETrace::Do( _T("** Erreur ** L'offset 0 de l'objet eMem2 est hors limite.\n") );


if ( eOk( eMem2.SizeGet( &ullSize, 3 ) ) )
  ETrace::DoEx( _T("Taille disponible depuis l'offset 3 de l'objet eMem2 = %I64u.\n"), ullSize );
else
  ETrace::Do( _T("** Erreur ** L'offset 3 de l'objet eMem2 est hors limite.\n") );

if ( eOk( eMem2.SizeGet( &ullSize, 5 ) ) )
  ETrace::DoEx( _T("Taille disponible depuis l'offset 5 de l'objet eMem2 = %I64u.\n"), ullSize );
else
  ETrace::Do( _T("** Erreur ** L'offset 5 de l'objet eMem2 est hors limite.\n") );

if ( eOk( eMem2.SizeGet( &ullSize, 6 ) ) )
  ETrace::DoEx( _T("Taille disponible depuis l'offset 6 de l'objet eMem2 = %I64u.\n"), ullSize );
else
  ETrace::Do( _T("** Erreur ** L'offset 6 de l'objet eMem2 est hors limite.\n") );

Sortie :

### Object EMemory 'eMem0' Trace #
# Object address='0x0012F410', status='EMemory::ObjectStatus_Free' (code '1').
# Buffer address='0x00000000', workspace size='0' byte(s).
### End #

### Object EMemory 'eMem1' Trace #
# Object address='0x0012F3F8', status='EMemory::ObjectStatus_Empty' (code '2').
# Buffer address='0x00000004', workspace size='0' byte(s).
### End #

### Object EMemory 'eMem2' Trace #
# Object address='0x0012F3E0', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000006', workspace size='5' byte(s).
### End #

Taille disponible depuis l'offset 0 de l'objet eMem0 = 0.
** Erreur ** L'offset 1 de l'objet eMem0 est hors limite.

Taille disponible depuis l'offset 0 de l'objet eMem1 = 0.
** Erreur ** L'offset 1 de l'objet eMem1 est hors limite.

Taille disponible depuis l'offset 0 de l'objet eMem2 = 5.
Taille disponible depuis l'offset 3 de l'objet eMem2 = 2.
Taille disponible depuis l'offset 5 de l'objet eMem2 = 0.
** Erreur ** L'offset 6 de l'objet eMem2 est hors limite.

Vue :

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E ..
  00 01 02 03 04

 

Voir aussi
E_RTN EMemory::Empty( void );
void EMemory::Free( void );
ulonglong EMemory::SizeGet( void );
E_RTN EMemory::SizeSet( ulonglong ullNewSize );
E_RTN EMemory::SizeSet( ulonglong ullNewSize, uchar ucByteToFill );
E_RTN EMemory::SizeSet( ulonglong ullNewSize, void *pBlockToFill, ulonglong ullBlockToFillSize );

 

Minimum
Version 1.0.0