Prototype
E_RTN EMemory::BlockCopy( void *pBlockToCopy,
ulonglong ullBlockToCopySize,
ulonglong ullOffset = 0 );

Cette fonction copie le bloc d'octets pBlock à l'offset ullOffset.

Il doit y avoir assez de place depuis l'offset jusqu'à la fin de l'espace de travail pour pouvoir stocker les données.

Les données à copier ne sont pas insérées mais elles viennent écrasent les précédentes s'y trouvant.

 

Argument

void *pBlockToCopy

adresse du bloc d'octets à copier.

ulonglong ullBlockToCopySize

taille du bloc d'octets à copier.

ulonglong ullOffset = 0

offset de départ où le bloc d'octets doit être copié.

 

Retour

E_RTN

voir la section retour de la librairie Eclat.

 

Exemple

Description :

Effectue la copie d'un bloc d'octets 0x41, 0x42 et 0x43 ("ABC" en ASCII) à l'offset 1 d'un objet EMemory d'une taille de 5 octets ayant les informations 0x56, 0x57, 0x58, 0x59 et 0x5A ("VWXYZ" en ASCII).

Code :

EMemory eMem( "VWXYZ", 5 ); // objet EMemory alloué de 5 octets

eMem.TraceEx( _T("eMem") );
eMem.BlockCopy( "ABC", 3, 1 );
eMem.TraceEx( _T("eMem") );

Sortie :

### Object EMemory 'eMem' Trace #
# Object address='0x0012F458', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000004', workspace size='5' byte(s).
# Array data from offset '0x00000000' to offset '0x00000004', length=5 byte(s).
# Offset start 0x00000000 56 57 58 59 5A .. .. .. .. .. .. .. .. .. .. .. VWXYZ
### End #

### Object EMemory 'eMem' Trace #
# Object address='0x0012F458', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000004', workspace size='5' byte(s).
# Array data from offset '0x00000000' to offset '0x00000004', length=5 byte(s).
# Offset start 0x00000000 56 41 42 43 5A .. .. .. .. .. .. .. .. .. .. .. VABCZ
### End #

Vue :

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E ..
  00 01 02 03 04
  56
V
57
W
58
X
59
Y
5A
Z

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

 

Voir aussi
E_RTN EMemory::ByteCopy( uchar ucByteToCopy, ulonglong ullOffset = 0 );
E_RTN EMemory::ByteCopyExact( uchar ucByteToCopy );
E_RTN EMemory::BlockCopyExact( void *pBlockToCopy, ulonglong ullBlockToCopySize );
E_RTN EMemory::BlockCopyTo( void *pBlockDest, ulonglong ullOffset = 0, ulonglong ullOffsetSize = EMemory::SizeUpToEnd );

 

Minimum
Version 1.0.0