Prototype
E_RTN EMemory::BlockSuppress( ulonglong *pullBlockCountSuppressed,
void *pBlockToSuppress,
ulonglong ullBlockToSuppressSize,
ulonglong ullOffset = 0,
ulonglong ullOffsetSize = EMemory::SizeUpToEnd );

Cette fonction supprime tous les blocs d'octets d'un intervalle de travail ayant les valeurs du bloc d'octets pBlockToSuppress.

Si des octets ont été supprimés, l'espace de travail est redimensionné à la baisse du poids octal supprimé.

 

Argument

ulonglong *pullBlockCountSuppressed

adresse d'un pointeur de type ulonglong où sera stocké le nombre de bloc d'octets supprimé.

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

void *pBlockToSuppress

adresse du bloc d'octets à supprimer.

ulonglong ullBlockToSuppressSize

taille du bloc d'octets à supprimer.

ulonglong ullOffset = 0

offset de départ de l'intervalle de travail de suppression.

ulonglong ullOffsetSize = EMemory::SizeUpToEnd

étendue de l'intervalle de travail de suppression.

 

Retour

E_RTN

voir la section retour de la librairie Eclat.

 

Exemple

Description :

Suppression des blocs d'octets 0x41, 0x42 et 0x43 ("ABC" en ASCII) sur la totalité de l'espace de travail d'un objet EMemory alloué de 12 octets contenant les données 0x41, 0x42, 0x43, 0x41, 0x42, 0x41, 0x42, 0x43, 0x43, 0x41, 0x42 et 0x43 ("ABCABABCCABC" en ASCII).

Code :

EMemory eMem( "ABCABABCCABC", 12 ); // objet EMemory alloué de 12 octets
ulonglong ullCount = 0;

eMem.TraceEx( _T("eMem") );
eMem.BlockSuppress( &ullCount, "ABC", 3 );
ETrace::DoEx( _T("Nombre de bloc d'octets \"ABC\" supprimé = %I64u.\n\n"), ullCount );
eMem.TraceEx( _T("eMem") );

 

Sortie :

### Object EMemory 'eMem' Trace #
# Object address='0x0012F44C', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000002', workspace size='12' byte(s).
# Array data from offset '0x00000000' to offset '0x0000000B', length=12 byte(s).
# Offset start 0x00000000 41 42 43 41 42 41 42 43 43 41 42 43 .. .. .. .. [ABCABABCCABC]
### End #

Nombre de bloc d'octets "ABC" supprimé = 3.

### Object EMemory 'eMem' Trace #
# Object address='0x0012F44C', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000002', workspace size='3' byte(s).
# Array data from offset '0x00000000' to offset '0x00000002', length=3 byte(s).
# Offset start 0x00000000 41 42 43 .. .. .. .. .. .. .. .. .. .. .. .. .. [ABC]
### End #

Vue :

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

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

 

Voir aussi
E_RTN EMemory::SpaceSuppress( ulonglong ullOffset=0, ulonglong ullOffsetSize=EMemory::SizeUpToEnd );
E_RTN EMemory::SpaceSuppressEach( ulonglong *pullSpaceCountSuppressed, ulonglong ullSpaceToSuppressSize, ulonglong ullStepEach, BOOL bStartAtFirst, ulonglong ullOffset = 0, ulonglong ullOffsetSize = EMemory::SizeUpToEnd );
E_RTN EMemory::ByteSuppress( ulonglong *pullByteCountSuppressed, uchar ucByteToSuppress, ulonglong ullOffset = 0, ulonglong ullOffsetSize = EMemory::SizeUpToEnd );
E_RTN EMemory::BytesSuppress( ulonglong *pullByteCountSuppressed, void *pBytesToSuppress, ulonglong ullBytesToSuppressSize, ulonglong ullOffset = 0, ulonglong ullOffsetSize = EMemory::SizeUpToEnd );
E_RTN EMemory::BlocksSuppress( ulonglong *pullBlockCountSuppressed, ulonglong *pullBlockWeightAccrued, EMemory::SC_BLOCK *pscBlockToSuppress, ulonglong ullBlockToSuppressCount, ulonglong ullOffset = 0, ulonglong ullOffsetSize = EMemory::SizeUpToEnd );

 

Minimum
Version 1.0.0