Page 1 sur 1
emplacement memoire
Publié : dim. 06/juil./2008 22:23
par Backup
qui saurai comment connaitre l'emplacement memoire (Ram), sa taille, et éventuellement l'adresse de fin (ram) d'un programme XXX ???
hum ! la question qui tue !
ps: je sais deja avoir la liste des process
mais pas moyen d'avoir leur emplacement memoire; taille ...

Publié : dim. 06/juil./2008 23:00
par Jacobus
Ceci devrait t'aider, je m'en sers dans mon gestionnaire des tâches en PB 4.20 sur xp et vista. A intégrer dans un code bien sûr.
Code : Tout sélectionner
;structure nécessaire pour obtenir l'usage mémoire
Structure PROCESS_MEMORY_COUNTERS
cb.l
PageFaultCount.l
PeakWorkingSetSize.l
WorkingSetSize.l
QuotaPeakPagedPoolUsage.l
QuotaPagedPoolUsage.l
QuotaPeakNonPagedPoolUsage.l
QuotaNonPagedPoolUsage.l
PagefileUsage.l
PeakPagefileUsage.l
EndStructure
ProcedureDLL GetProcessMemory(PID.l) ; mémoire vive utilisée
pmc.PROCESS_MEMORY_COUNTERS
hProcess.l = OpenProcess_(#PROCESS_QUERY_INFORMATION|#PROCESS_VM_READ, #False, PID)
If OpenLibrary(0,"PSAPI.DLL")
*F=GetFunction(0,"GetProcessMemoryInfo")
If *F
CallFunctionFast(*F,hProcess,@pmc,SizeOf(pmc))
GetProcessusSize = pmc\WorkingSetSize
Else
CloseLibrary(0)
End
EndIf
Else
End
EndIf
ProcedureReturn GetProcessusSize
EndProcedure
ProcedureDLL GetProcessPagefile(PID.l) ; mémoire paginée
pmc.PROCESS_MEMORY_COUNTERS
hProcess.l = OpenProcess_(#PROCESS_QUERY_INFORMATION|#PROCESS_VM_READ, #False, PID)
If OpenLibrary(0,"PSAPI.DLL")
*F=GetFunction(0,"GetProcessMemoryInfo")
If *F
CallFunctionFast(*F,hProcess,@pmc,SizeOf(pmc))
GetProcessusPagefileUsage = pmc\PagefileUsage
Else
CloseLibrary(0)
End
EndIf
Else
End
EndIf
ProcedureReturn GetProcessusPagefileUsage
EndProcedure
;exemples de récup avec un identifiant de process correct...
Memory = Str(GetProcessMemory(pid)/1024)+" ko"
PageFile = Str(GetProcessPagefile(pid)/1024)+" ko"
J'ai essayé aussi avec ça et ça fonctionne (je pensais obtenir plus de droits, mais c'est pareil)
Mets ça :
Code : Tout sélectionner
hProcess.l = OpenProcess_( #PROCESS_ALL_ACCESS, #False, PID )
à la place de ça :
Code : Tout sélectionner
hProcess.l = OpenProcess_(#PROCESS_QUERY_INFORMATION|#PROCESS_VM_READ, #False, PID)
Publié : lun. 07/juil./2008 1:05
par Backup
Merci

, regarde tes Messages privé..
