Prototype
E_RTN EMemory::BytesSuppress( ulonglong *pullByteCountSuppressed,
void *pBytesToSuppress,
ulonglong ullBytesToSuppressSize,
ulonglong ullOffset = 0,
ulonglong ullOffsetSize = EMemory::SizeUpToEnd );

Cette fonction supprime tous les octets d'un intervalle de travail ayant l'une des valeurs de la série d'octets pBytesToSuppress.

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

 

Argument

ulonglong *pullByteCountSuppressed

adresse d'un pointeur de type ulonglong où sera stocké le nombre 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 *pBytesToSuppress

adresse de la série d'octets à supprimer.

ulonglong ullBytesToSuppressSize

taille de la série 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 octets ayant l'une des valeurs de la série d'octets 0x45, 0x43 et 0x41 ("ECA" en ASCII) de l'intervalle de travail de l'offset 1 sur une taille de 7 octets puis suppression des octets ayant l'une des valeurs de la série d'octets 0x41, 0x44 et 0x42 ("ADB" en ASCII) sur la totalité de l'espace de travail d'un objet EMemory contenant les données 0x41, 0x42, 0x41, 0x43, 0x41, 0x44, 0x41, 0x45 et 0x41 ("ABACADAEA" en ASCII).

Code :

EMemory eMem( "ABACADAEA", 9 ); // objet EMemory alloué de 9 octets
ulonglong ullCount;

eMem.TraceEx( _T("eMem") );
eMem.BytesSuppress( &ullCount, "ECA", 3, 1, 7 );
ETrace::DoEx( _T("Nombre d'octets de valeur 0x45 ou 0x43 ou 0x41 supprimé de l'offset 1 sur une taille de 7 octets = %I64u.\n\n"), ullCount );
eMem.TraceEx( _T("eMem") );

eMem.BytesSuppress( &ullCount, "ADB", 3 );
ETrace::DoEx( _T("Nombre d'octets de valeur 0x41 ou 0x44 ou 0x42 supprimé sur l'ensemble de l'objet = %I64u.\n\n"), ullCount );
eMem.TraceEx( _T("eMem") );

Sortie :

### Object EMemory 'eMem' Trace #
# Object address='0x0012F400', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000004', workspace size='9' byte(s).
# Array data from offset '0x00000000' to offset '0x00000008', length=9 byte(s).
# Offset start 0x00000000 41 42 41 43 41 44 41 45 41 .. .. .. .. .. .. .. [ABACADAEA]
### End #

Nombre d'octets de valeur 0x45 ou 0x43 ou 0x41 supprimé de l'offset 1 sur une taille de 7 octets = 5.

### Object EMemory 'eMem' Trace #
# Object address='0x0012F400', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000004', workspace size='4' byte(s).
# Array data from offset '0x00000000' to offset '0x00000003', length=4 byte(s).
# Offset start 0x00000000 41 42 44 41 .. .. .. .. .. .. .. .. .. .. .. .. [ABDA]
### End #

Nombre d'octets de valeur 0x41 ou 0x44 ou 0x42 supprimé sur l'ensemble de l'objet = 4.

### Object EMemory 'eMem' Trace #
# Object address='0x0012F400', status='EMemory::ObjectStatus_Empty' (code '2').
# Buffer address='0x00000004', workspace size='0' byte(s).
# No data to show from offset '0x00000000' to offset '0x00000000', length=0 byte(s).
### 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
  41
A
42
B
41
A
43
C
41
A
44
D
41
A
45
E
41
A

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

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

 

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::BlockSuppress( ulonglong *pullBlockCountSuppressed, void *pBlockToSuppress, ulonglong ullBlockToSuppressSize, 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