Prototype
E_RTN EMemory::SpaceInsert( ulonglong ullSpaceToInsertSize,
ulonglong ullOffset,
uchar ucByteToFill );

Cette fonction insère ullSpaceToInsertSize octet(s) à l'offset ullOffset. Tous les octets insérés sont nettoyés à l'aide de l'octet ucByteToFill.

L'offset peut être à l'intérieur de l'espace de travail ou à la limite finale externe (voir l'exemple pour l'insertion à l'offset 12).

 

Argument

ulonglong ullSpaceToInsertSize

taille qu'il faut insérer, en octets.

ulonglong ullOffset

offset où doit s'effectuer l'insertion.

uchar ucByteToFill

octet servant pour le nettoyage des octets insérés.

 

Retour

E_RTN

voir la section retour de la librairie Eclat.

 

Exemple

Description :

Insertion d'un espace de 3 octets nettoyé à l'aide de l'octet 0x5A ("Z" en ASCII), à l'offset 0 puis à l'offset 6 puis à l'offset 12 (limite finale externe) d'un objet EMemory alloué de 6 octets contenant les données 0x41, 0x42, 0x43, 0x44, 0x45 et 0x46 ("ABCDEF" en ASCII).

Code :

EMemory eMem( "ABCDEF", 6 ); // objet EMemory alloué de 6 octets

eMem.TraceEx( _T("eMem") );
eMem.SpaceInsert( 3, 0, 'Z' );
eMem.TraceEx( _T("eMem") );
eMem.SpaceInsert( 3, 6, 'Z' );
eMem.TraceEx( _T("eMem") );
eMem.SpaceInsert( 3, 12, 'Z' ); // Insertion à la limite finale externe
eMem.TraceEx( _T("eMem") );

Sortie :

### Object EMemory 'eMem' Trace #
# Object address='0x0012F408', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000001', workspace size='6' byte(s).
# Array data from offset '0x00000000' to offset '0x00000005', length=6 byte(s).
# Offset start 0x00000000 41 42 43 44 45 46 .. .. .. .. .. .. .. .. .. .. [ABCDEF]
### End #

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

### Object EMemory 'eMem' Trace #
# Object address='0x0012F408', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000001', workspace size='12' byte(s).
# Array data from offset '0x00000000' to offset '0x0000000B', length=12 byte(s).
# Offset start 0x00000000 5A 5A 5A 41 42 43 5A 5A 5A 44 45 46 .. .. .. .. [ZZZABCZZZDEF]
### End #

### Object EMemory 'eMem' Trace #
# Object address='0x0012F408', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000001', workspace size='15' byte(s).
# Array data from offset '0x00000000' to offset '0x0000000E', length=15 byte(s).
# Offset start 0x00000000 5A 5A 5A 41 42 43 5A 5A 5A 44 45 46 5A 5A 5A .. [ZZZABCZZZDEFZZZ]
### End #

Vue :

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

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
5A
Z
5A
Z
41
A
42
B
43
C
44
D
45
E
46
F

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E ..
  00 01 02 03 04 05 06 07 08 09 0A 0B
  5A
Z
5A
Z
5A
Z
41
A
42
B
43
C
5A
Z
5A
Z
5A
Z
44
D
45
E
46
F

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
  00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E
  5A
Z
5A
Z
5A
Z
41
A
42
B
43
C
5A
Z
5A
Z
5A
Z
44
D
45
E
46
F
5A
Z
5A
Z
5A
Z

 

Voir aussi
E_RTN EMemory::SpaceInsert( ulonglong ullSpaceToInsertSize, ulonglong ullOffset );
E_RTN EMemory::SpaceInsert( ulonglong ullSpaceToInsertSize, ulonglong ullOffset, void *pBlockToFill, ulonglong ullBlockToFillSize );
E_RTN EMemory::ByteInsert( uchar ucByteToInsert, ulonglong ullOffset = 0 );
E_RTN EMemory::BlockInsert( void *pBlockToInsert, ulonglong ullBlockToInsertSize, ulonglong ullOffset = 0 );
E_RTN EMemory::SpaceInsertEach( ulonglong *pullSpaceCountInserted, ulonglong ullSpaceToInsertSize, ulonglong ullStepEach, BOOL bStartAtFirst, ulonglong ullOffset = 0, ulonglong ullOffsetSize = EMemory::SizeUpToEnd );
E_RTN EMemory::SpaceInsertEach( ulonglong *pullSpaceCountInserted, ulonglong ullSpaceToInsertSize, ulonglong ullStepEach, BOOL bStartAtFirst, uchar ucByteToFill, ulonglong ullOffset = 0, ulonglong ullOffsetSize = EMemory::SizeUpToEnd );
E_RTN EMemory::SpaceInsertEach( ulonglong *pullSpaceCountInserted, ulonglong ullSpaceToInsertSize, ulonglong ullStepEach, BOOL bStartAtFirst, void *pBlockToFill, ulonglong ullBlockToFillSize, ulonglong ullOffset = 0, ulonglong ullOffsetSize = EMemory::SizeUpToEnd );
E_RTN EMemory::ByteInsertEach( ulonglong *pullByteCountInserted, uchar ucByteToInsert, ulonglong ullStepEach, BOOL bStartAtFirst, ulonglong ullOffset = 0, ulonglong ullOffsetSize = EMemory::SizeUpToEnd );
E_RTN EMemory::BlockInsertEach( ulonglong *pullBlockCountInserted, void *pBlockToInsert, ulonglong ullBlockToInsertSize, ulonglong ullStepEach, BOOL bStartAtFirst, ulonglong ullOffset = 0, ulonglong ullOffsetSize = EMemory::SizeUpToEnd );

 

Minimum
Version 1.0.0