u147078
Messages postés8Date d'inscriptionmercredi 20 octobre 2004StatutMembreDernière intervention14 mars 2011
-
9 déc. 2009 à 01:19
u147078
Messages postés8Date d'inscriptionmercredi 20 octobre 2004StatutMembreDernière intervention14 mars 2011
-
9 mars 2011 à 13:34
Bonjour,
Je cherche à récuperer la Mémoire Virtuelle d'un Process donné.
J'ai essayé la fonction GetProcessMemoryInfo de la Lib "PSAPI.DLL" , mais les données renvoyées ne correspondent pas réellemnt à la Mémoire virtuelle.
Dans le TAskManager on retrouve un attrb nommé "Taille MV" ou "MV Size" mais correspond au "Private Bytes" de Process Explorer.
La valeur qui m'interesse c'est bien le Virtual Size de la Virtual Memory. C'est cette valeur qui, lorsqu'elle approche les 2 Go fait tomber le process de mon script.
Si vous savez comment récuperer cette info en VB6 pour un process donné.. merci de l'info.
Private Declare Function GetProcessMemoryInfo Lib "PSAPI.DLL" (ByVal hProcess As Long, ppsmemCounters As PROCESS_MEMORY_COUNTERS, ByVal cb As Long) As Long
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202175 9 déc. 2009 à 07:51
est-ce cela :
PrivateUsage The current amount of memory that cannot be shared with other processes, in bytes. Private bytes include memory that is committed and marked MEM_PRIVATE, data that is not mapped, and executable pages that have been written to.
u147078
Messages postés8Date d'inscriptionmercredi 20 octobre 2004StatutMembreDernière intervention14 mars 2011 9 mars 2011 à 13:34
Merci, la solution utilisée est la suivante :
'Objet WMI
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
'Recupération du process
sQuery "Select * from Win32_Process Where Name '" + sProcessName + "'"
Set colProcessList = objWMIService.ExecQuery(sQuery)
If colProcessList.Count = 0 Then
GetVirtualMemorySizeFromProcessName = 0
Else
For Each objProcess In colProcessList
If ModeProcessAlone = True Then
If colProcessList.Count = 1 Then
FindProcess = True
Exit For
Else
GetVirtualMemorySizeFromProcessName = 0
Exit Function
End If
End If
sProcessID = objProcess.ProcessId
If CLng(CurrentPID) CLng(sProcessID) Then FindProcess True: Exit For
Next
If FindProcess = True Then
sTemp = objProcess.VirtualSize
dMem = CDbl(sTemp) / 1024
GetVirtualMemorySizeFromProcessName = dMem
End If
End If
End Function