Prototype
E_RTN EMemory::BlocksCountGet( ulonglong *pullBlockCounted,
ulonglong *pullBlockWeightAccrued,
EMemory::SC_BLOCK *pscBlockToCount,
ulonglong ullBlockToCountCount,
ulonglong ullOffset = 0,
ulonglong ullOffsetSize = EMemory::SizeUpToEnd );

Cette fonction décompte le nombre de blocs d'octets de l'intervalle de travail ayant pour valeur l'un des blocs d'octets pscBlockToCount.

 

Argument

ulonglong *pullBlockCounted

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

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

ulonglong *pullBlockWeightAccrued

adresse d'une variable de type ulonglong où y sera stocké le poids octale de tous les blocs d'octets décomptés, c'est à dire la somme de tous les octets décomptés.

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

EMemory::SC_BLOCK *pscBlockToCount

adresse de la structure de type EMemory::SC_BLOCK ou du tableau de structures de type EMemory::SC_BLOCK à décompter.

ulonglong ullBlockToCountCount

nombre de structure de type EMemory::SC_BLOCK contenu dans le pointeur pscBlockToFind à décompter.

ulonglong ullOffset = 0

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

ulonglong ullOffsetSize = EMemory::SizeUpToEnd

étendue de l'intervalle de travail de décompter.

 

Retour

E_RTN

voir la section retour de la librairie Eclat.

 

Exemple

Description :

Décompte de tous les blocs d'octets ayant soit la valeur 0x0D, soit la valeur 0x0A, soit les valeur 0x0D et 0x0A, soit la valeur 0x00 dans un objet EMemory alloué de 26 octets d'espace de travail contenant les données 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x0D, 0x0A, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x0D, 0x4C, 0x4D, 0x4E, 0x4F, 0x0A, 0x50, 0x51, 0x52, 0x00, 0x53, 0x54 et 0x0D ("ABCDEF\x0D\x0AGHIJK\x0DLMNO\x0APQR\x00ST\x0D" en ASCII).

Code :

EMemory eMem( "ABCDEF\x0D\x0AGHIJK\x0DLMNO\x0APQR\x00ST\x0D", 26 ); // objet EMemory alloué de 26 octets
ulonglong ullBlockCount;
ulonglong ullBlockWeight;
EMemory::SC_BLOCK sctBlock[]={
  { "\x0D", 1, 0, 0, 0 },
  { "\x0A", 1, 0, 0, 0 },
  { "\x0D\x0A", 2, 0, 0, 0 },
  { "\x00", 1, 0, 0, 0 }
  };

eMem.TraceEx( _T("eMem") );

if ( eOk( eMem.BlocksCountGet( &ullBlockCount, &ullBlockWeight, sctBlock, 4 ) ) )
  ETrace::DoEx( _T("Nombre de bloc d'octets trouvé = %I64u, poids octale trouvé = %I64u.\n"), ullBlockCount, ullBlockWeight );

Sortie :

### Object EMemory 'eMem' Trace #
# Object address='0x0012F468', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000004', workspace size='26' byte(s).
# Array data from offset '0x00000000' to offset '0x00000019', length=26 byte(s).
# Offset start 0x00000000 41 42 43 44 45 46 0D 0A 47 48 49 4A 4B 0D 4C 4D [ABCDEF..GHIJK.LM]
# Offset start 0x00000010 4E 4F 0A 50 51 52 00 53 54 0D .. .. .. .. .. .. [NO.PQR.ST.]
### End #

Nombre de bloc d'octets trouvé = 5, poids octale trouvé = 6.

Vue :

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
41
A
42
B
43
C
44
D
45
E
46
F
0D 0A 47
G
48
H
49
I
4A
J
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E ..
0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19
4B
K
0D 4C
L
4D
M
4E
N
4F
O
0A 50
P
51
Q
52
R
00 53
S
54
T
0D

 

Voir aussi
E_RTN EMemory::ByteCountGet( ulonglong *pullByteCounted, uchar ucByteToCount, ulonglong ullOffset = 0, ulonglong ullOffsetSize = EMemory::SizeUpToEnd );
E_RTN EMemory::BytesCountGet( ulonglong *pullByteCounted, void *pBytesToCount, ulonglong ullBytesToCountSize, ulonglong ullOffset = 0, ulonglong ullOffsetSize = EMemory::SizeUpToEnd );
E_RTN EMemory::BlockCountGet( ulonglong *pullBlockCounted, void *pBlockToCount, ulonglong ullBlockToCountSize, ulonglong ullOffset = 0, ulonglong ullOffsetSize = EMemory::SizeUpToEnd );

 

Minimum
Version 1.0.0