processus et memoire d'occupation traduction demandé ...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

processus et memoire d'occupation traduction demandé ...

Message par Backup »

.....................
Dernière modification par Backup le dim. 20/mars/2011 14:29, modifié 1 fois.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: processus et memoire d'occupation traduction demandé ...

Message par Ollivier »

Salut, même si je ne peux rien certifier à ce sujet, voici une traduction.

@+

Code : Tout sélectionner

; -------------------------------------------------------
; Obtient les différentes zones mémoire d'un processus utilisées dans la zone virtuelle
; -------------------------------------------------------

Procedure RetrieveMemRegions(lPid.L, Array lBaseAdress.L(1), Array lRegionSize.L(1) )

  Protected lHandle.L
  Protected lPosMem.L
  Protected lRet.L
  Protected lLenMBI.L
  Protected mbi.MEMORY_BASIC_INFORMATION
  Protected si.SYSTEM_INFO

  ; Initialise les tableaux
  ReDim lBaseAdress.L(0)
  ReDim lRegionSize.L(0)

  ; Obtient le handle du processus
  lHandle = OpenProcess_(#PROCESS_ALL_ACCESS, #False, lPid)
  
  lLenMBI = SizeOf(MEMORY_BASIC_INFORMATION) ; Taille de la Structure
  GetSystemInfo_(si) ; Obtient les infos sur les adresses de début et de fin de la plage mémoire maximum

  lPosMem = si\lpMinimumApplicationAddress ; Adresse la plus petite ==> part de là

  While lPosMem < si\lpMaximumApplicationAddress ; Tant que l'adresse est inférieure à l'adresse maximale

    mbi\RegionSize = 0

    ; Obtient les infos sur les régions mémoire du processus définit par son handle hProcess
    lRet = VirtualQueryEx_(lHandle, @lPosMem, mbi, lLenMBI)

    If lRet = lLenMBI
    
      If (mbi\lType = #MEM_PRIVATE) And (mbi\State = #MEM_COMMIT)
        ; Alors utilisé par le processus, on récupère les infos
        
        If mbi\RegionSize > 0
          
          ; Région non nulle, alors on la stocke dans les tableaux résultats
          ; Les redimensionne
          ReDim lBaseAdress.L(ArraySize(lBaseAdress() ) + 1)
          ReDim lRegionSize.L(ArraySize(lRegionSize() ) + 1)

          ; Stocke à la fin
          lRegionSize(ArraySize(lRegionSize() ) ) = mbi\RegionSize
          lBaseAdress(ArraySize(lBaseAdress() ) ) = mbi\BaseAddress
        EndIf
        
      EndIf
      ; Continue la recherche des régions (ajoute la taille de la région à l'adresse de départ ==> donne la prochaine adresse de départ)
      
      lPosMem = mbi\BaseAddress + mbi\RegionSize ; Fait l'ajout

    Else
    
      ; Recherche terminée
      Break

    EndIf

  Wend

  CloseHandle_(lHandle)

EndProcedure
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: processus et memoire d'occupation traduction demandé ...

Message par Backup »

Merci , je vais regarder ça :D

t'es rentré de vacances ? :) Cool !! :D

tu manquais au forum :)
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: processus et memoire d'occupation traduction demandé ...

Message par Ollivier »

Moi, j'en reviens toujours pas que Cpl.Bator ait rincé son pseudo. Il pouvait rester...
M'enfin, en tout cas c'est surtout à vous que mon absence a fait des vacances. :mrgreen:

Si jamais la traduction ne marche pas, c'est peut-être ce vestige des vieux interpréteurs...

Code : Tout sélectionner

# On Error GoTo ErrCapacityGestion 'dépassement de capacité pour la dernière adresse+regionsize
...Que je n'ai pas traduit.

ça doit être un truc comme

Code : Tout sélectionner

! JC l_ErrCapacityGestion
à placer après l'addition

Code : Tout sélectionner

lPosMem = mbi\BaseAddress + mbi\RegionSize ; Fait l'ajout
Dans ce cas-là, il s'agit d'un saut (Jump if Carry l_mylabel) donc il y a le label à placer aussi (se repérer par rapport au code original).
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: processus et memoire d'occupation traduction demandé ...

Message par Backup »

pour ne rien te cacher , ça marchais pas vraiment..

enfin , une partie fonctionne , celle qui renvoie les adresses de base

mais le mapping est tres tres long :)

j'ai utilisé un code de Hardy qui traine sur le Forum
et qui lui marche pas trop mal apparemment ...

quand je pense que j'avais une réponse sur notre forum , mais que je n'avais pas réussi a retrouver :)

ici :
http://www.purebasic.fr/french/viewtopi ... _&start=30


Merci encore :)
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: processus et memoire d'occupation traduction demandé ...

Message par Ollivier »

Excellent petit lexique des sigles anglais dans ton lien. Merci! Je vais mieux les comprendre comme ça...
Répondre