Prototype
E_RTN EMemory::ByteSubstitute( ulonglong *pullByteCountSubstitued,
uchar ucByteToPut,
uchar ucByteToFind,
ulonglong ullOffset = 0,
ulonglong ullOffsetSize = EMemory::SizeUpToEnd );

Cette fonction substitue chaque octet ucByteToFind de l'intervalle de travail par l'octet ucByteToPut.

 

Argument

ulonglong *pullByteCountSubstitued

adresse d'une variable de type ulonglong où y sera stocké le nombre d'octets substituté.

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

uchar ucByteToPut

octet de substitution (valeur qui va remplacer).

uchar ucByteToFind

octet à substituer (valeur qui doit être remplacée).

ulonglong ullOffset = 0

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

ulonglong ullOffsetSize = EMemory::SizeUpToEnd

étendue de l'intervalle de travail de substitution.

 

Retour

E_RTN

voir la section retour de la librairie Eclat.

 

Exemple

Description :

Substitution de l'octet 0x41 ('A' en ASCII) par l'octet 0x5A ('Z' 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 = 0;

eMem.TraceEx( _T("eMem") );
eMem.ByteSubstitute( &ullCount, 'Z', 'A' );
ETrace::DoEx( _T("Nombre d'octets ayant la valeur 0x41 remplacé par la valeur 0x5A = %I64u.\n\n"), ullCount );
eMem.TraceEx( _T("eMem") );

Sortie :

### Object EMemory 'eMem' Trace #
# Object address='0x0012F468', 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 ayant la valeur 0x41 remplacé par la valeur 0x5A = 5.

### Object EMemory 'eMem' Trace #
# Object address='0x0012F468', 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 5A 42 5A 43 5A 44 5A 45 5A .. .. .. .. .. .. .. [ZBZCZDZEZ]
### 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 04 05 06 07 08
  5A
Z
42
B
5A
Z
43
C
5A
Z
44
D
5A
Z
45
E
5A
Z

 

Voir aussi
E_RTN EMemory::BytesSubstitute( ulonglong *pullByteCountSubstitued, uchar ucByteToPut, void *pBytesToFind, ulonglong ullBytesToFindSize, ulonglong ullOffset = 0, ulonglong ullOffsetSize = EMemory::SizeUpToEnd );
E_RTN EMemory::BlockSubstitute( ulonglong *pullBlockCountSubstitued, void *pBlockToPut, ulonglong ullBlockToPutSize, void *pBlockToFind, ulonglong ullBlockToFindSize, ulonglong ullOffset = 0, ulonglong ullOffsetSize = EMemory::SizeUpToEnd );
E_RTN EMemory::BlocksSubstitute( ulonglong *pullBlockCountSubstitued, void *pBlockToPut, ulonglong ullBlockToPutSize, EMemory::SC_BLOCK *pscBlockToFind, ulonglong ullBlockToFindCount, ulonglong ullOffset = 0, ulonglong ullOffsetSize = EMemory::SizeUpToEnd );

 

Minimum
Version 1.0.0