Prototype
void* EMemory::operator () ( ulonglong ullOffset );

Cet opérateur permet de récupérer l'adresse, de type void, d'un offset.

Etant donnée que le type void est un type inquantifiable, cet opération calcule l'offset comme si c'était un char (c'est à dire une unité de valeur d'un octet).

 

Argument

ulonglong ullOffset

offset dont l'opérateur doit retourner l'adresse.

 

Retour

void*

pointeur de type void.

 

Exemple

Description :

Inversion de l'octet à l'offset 0 et de l'octet à l'offset 7 en utilisant l'adresse des données par opérateur () d'un objet EMemory alloué de 8 octets ayant les données 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47 et 0x48 ("ABCDEFGH" en ASCII).

Petite note : étant donné que l'opérateur renvoie un pointeur de type void et que dans notre exemple nous utilise des pointeurs de type uchar, il est obligatoire de faire un casting lors de l'utilisation de l'opérateur.

Code :

EMemory eMem( "ABCDEFGH", 8 );
uchar ucBuffer;
uchar *pucStart = (uchar*)eMem(0); // utilisation de l'opérateur ()
uchar *pucEnd = (uchar*)eMem(7); // utilisation de l'opérateur ()

eMem.TraceEx( _T("eMem") );
ucBuffer = *pucStart;
ETrace::DoEx( _T("Octet lu à l'offset 0 = %C.\n\n"), ucBuffer );

*pucStart = *pucEnd;
eMem.TraceEx( _T("eMem") );
*pucEnd = ucBuffer;
eMem.TraceEx( _T("eMem") );

Sortie :

### Object EMemory 'eMem' Trace #
# Object address='0x0012F468', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000004', workspace size='8' byte(s).
# Array data from offset '0x00000000' to offset '0x00000007', length=8 byte(s).
# Offset start 0x00000000 41 42 43 44 45 46 47 48 .. .. .. .. .. .. .. .. [ABCDEFGH]
### End #

Octet lu à l'offset 0 = A.

### Object EMemory 'eMem' Trace #
# Object address='0x0012F468', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000004', workspace size='8' byte(s).
# Array data from offset '0x00000000' to offset '0x00000007', length=8 byte(s).
# Offset start 0x00000000 48 42 43 44 45 46 47 48 .. .. .. .. .. .. .. .. [HBCDEFGH]
### End #

### Object EMemory 'eMem' Trace #
# Object address='0x0012F468', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000004', workspace size='8' byte(s).
# Array data from offset '0x00000000' to offset '0x00000007', length=8 byte(s).
# Offset start 0x00000000 48 42 43 44 45 46 47 41 .. .. .. .. .. .. .. .. [HBCDEFGA]
### 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
  41
A
42
B
43
C
44
D
45
E
46
F
47
G
48
H

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

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

 

Voir aussi
EMemory& operator = ( EMemory &eMemory );
EMemory& operator += ( EMemory &eMemory );
uchar& operator [] ( ulonglong ullOffset );

 

Minimum
Version 1.0.0