Accueil > > > OBTENIR LES PLAGES MÉMOIRE UTILISÉES PAR UN PROCESSUS DANS LA MÉMOIRE VIRTUELLE
OBTENIR LES PLAGES MÉMOIRE UTILISÉES PAR UN PROCESSUS DANS LA MÉMOIRE VIRTUELLE
Information sur la source
Description
Ce code permet de savoir quelles sont les plages mémoire (à savoir l'adresse de départ et la taille de la région) utilisées par un processus. Avant de vous donner le code, voici une petite aide (forte utile) pour comprendre comment est partitionné l'espace mémoire virtuelle d'un processus ==> http://minso.free.fr/cavinfo/systeme/memoirevirtue lle.html Pour le code en lui même, çà réside dans l'utiisation de l'API VirtualQueryEx. Ce code présente également : -comment obtenir les droits pour son application pour pouvoir obtenir le handle de n'importe quel processus (avec la procédure GetAllPrivileges) -comment lister les processus (rien de nouveau)
Source
- 'Je ne donne ici que la procédure pour obtenir les espaces mémoire, l'exemple et les déclaration sont dans le *.zip
-
-
-
- '-------------------------------------------------------
- 'obtient les différentes zones mémoire d'un processus utilisées dans la zone virtuelle
- '-------------------------------------------------------
- Public Sub RetrieveMemRegions(ByVal lPid As Long, ByRef lBaseAdress() As Long, ByRef lRegionSize() As Long)
- Dim lHandle As Long
- Dim lPosMem As Long
- Dim lRet As Long
- Dim lLenMBI As Long
- Dim mbi As MEMORY_BASIC_INFORMATION
- Dim si As SYSTEM_INFO
-
- 'initialise les tableaux
- ReDim lBaseAdress(0)
- ReDim lRegionSize(0)
-
- 'obtient le handle du processus
- lHandle = OpenProcess(PROCESS_ALL_ACCESS, False, lPid)
-
- lLenMBI = Len(mbi) '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à
-
- Do 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, ByVal lPosMem, mbi, lLenMBI)
-
- If lRet = lLenMBI Then
-
- If (mbi.lType = MEM_PRIVATE) And (mbi.State = MEM_COMMIT) Then
- 'alors utilisé par le processus, on récupère les infos
-
- If mbi.RegionSize > 0 Then
- 'région non nulle, alors on la stocke dans les tableaux résultats
- 'les redimensionne
- ReDim Preserve lBaseAdress(UBound(lBaseAdress) + 1)
- ReDim Preserve lRegionSize(UBound(lRegionSize) + 1)
- 'stocke à la fin
- lRegionSize(UBound(lRegionSize)) = mbi.RegionSize
- lBaseAdress(UBound(lBaseAdress)) = mbi.BaseAddress
- End If
-
- End If
- '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)
-
- On Error GoTo ErrCapacityGestion 'dépassement de capacité pour la dernière adresse+regionsize
-
- lPosMem = mbi.BaseAddress + mbi.RegionSize 'fait l'ajout
-
- Else
- 'recherche terminée
- Exit Do
- End If
- Loop
-
- ErrCapacityGestion:
- CloseHandle lHandle 'ferme le handle du processus
- End Sub
'Je ne donne ici que la procédure pour obtenir les espaces mémoire, l'exemple et les déclaration sont dans le *.zip
'-------------------------------------------------------
'obtient les différentes zones mémoire d'un processus utilisées dans la zone virtuelle
'-------------------------------------------------------
Public Sub RetrieveMemRegions(ByVal lPid As Long, ByRef lBaseAdress() As Long, ByRef lRegionSize() As Long)
Dim lHandle As Long
Dim lPosMem As Long
Dim lRet As Long
Dim lLenMBI As Long
Dim mbi As MEMORY_BASIC_INFORMATION
Dim si As SYSTEM_INFO
'initialise les tableaux
ReDim lBaseAdress(0)
ReDim lRegionSize(0)
'obtient le handle du processus
lHandle = OpenProcess(PROCESS_ALL_ACCESS, False, lPid)
lLenMBI = Len(mbi) '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à
Do 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, ByVal lPosMem, mbi, lLenMBI)
If lRet = lLenMBI Then
If (mbi.lType = MEM_PRIVATE) And (mbi.State = MEM_COMMIT) Then
'alors utilisé par le processus, on récupère les infos
If mbi.RegionSize > 0 Then
'région non nulle, alors on la stocke dans les tableaux résultats
'les redimensionne
ReDim Preserve lBaseAdress(UBound(lBaseAdress) + 1)
ReDim Preserve lRegionSize(UBound(lRegionSize) + 1)
'stocke à la fin
lRegionSize(UBound(lRegionSize)) = mbi.RegionSize
lBaseAdress(UBound(lBaseAdress)) = mbi.BaseAddress
End If
End If
'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)
On Error GoTo ErrCapacityGestion 'dépassement de capacité pour la dernière adresse+regionsize
lPosMem = mbi.BaseAddress + mbi.RegionSize 'fait l'ajout
Else
'recherche terminée
Exit Do
End If
Loop
ErrCapacityGestion:
CloseHandle lHandle 'ferme le handle du processus
End Sub
Conclusion
Encore un p'tit bout de mon editeur hexa, qui viendra probablement dans plus trop trop longtemps.
N'oubliez pas de commenter, et de noter ;)
Merci, @+
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
"mémoire virtuelle insuffisante" [ par LeoNoAiolia84 ]
Salut,J'ai créé un programme avec un nombre assez important de tableaux et de variables, et lorsqu'il est executé plusieur fois de suite je reçois le
Mémoire Virtuelle d'un Process (Virtual Memory) [ par u147078 ]
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 le
[Déplacé VB6 --> VBA] EXCEL : recherche de la couleur d'une cellule dans une plage et n° ligne et colonne [ par Herve34600 ]
Bonjour, Je suis novice de VBA [^^sad1] et je souhaiterais avoir une fonction supplémentaire qui me permettrait d'utiliser la couleur d'une cellule p
[A SUPPRIMER]mémoire [ par electrobone ]
slt je suis nouveau ici , iben je cherche des thèmes de fib d'études sur la gestion de maintenance industrielle ou une documentation sur la gestion de
plage vers tableau en VBA/Excel [ par ucfoutu ]
Bonjour, [u]Liminaire[/u] : mes interventions sur VBA/Excel pourraient donner à penser que je suis déjà "avancé" dans ce domaine. Il n'en est rien !
Erreur "3434" Impossible d'agrandir la plage nommée [ par Calade ]
Bonjour à tous, Devant rendre quotidiennement un certain nombre d'états pleins de chiffres dont les données brutes résident dans des SI pro', j'extra
EFFECTUER UNE RECHERCHE DANS UNE PLAGE DE CELLULES EXCEL [ par winvsmac ]
Bonjour à tout le monde Voici sur quoi je me creuse les méninges depuis un petit moment, mais je n'arrive pas à trouver de solution. Ceci concerne du
enregistrement de plage de données excel --> fichier texte [ par jeanjeuv ]
Bonjour, Je suis débutant en VBA Excel, je cherche à créer une macro qui me permettrait d'enregistrer une plage de données excel sous plusieurs fichie
créer plage horaire dans slider en vb6 [ par ja67 ]
bonjour, pourriez-vous m'indiquer comment avec vb6 créer une plage horaire (du type 8:00,8:15,8:30....) dans un slider;apparemment, le slider n'accept
Bug... [ par pochelu ]
Bonjour, Je suis novice en vba. J'ai besoin de votre aide. J'ai écris un petit programme qui doit calculer la valeur d'un zéro coupon à partir de di
|
Derniers Blogs
PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS !PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS ! par Etienne Margraff
J'ai récemment eu un problème pour obtenir l'intelliTrace sur un site web dans IIS. Il n'y avait pas de message d'erreur, rien dans le journal d'évènement Windows, et après 3 appels à une voyante, 2 visites chez un marabou, j'ai failli me résign...
Cliquez pour lire la suite de l'article par Etienne Margraff OFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONSOFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONS par junarnoalg
De nombreuses entreprises font le choix de SharePoint Online, service fourni au travers de l'offre de Microsoft Office 365. S'il est vrai que ce choix apporte un grand nombre d'avantages; rapidité de mise en œuvre, disponibilité, large couvertu...
Cliquez pour lire la suite de l'article par junarnoalg PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc [HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Très bonne après-midi passée lors cette conférence avec le W3C, organisée par L' Inria sur les nouveaux standards, ce Mardi 14 Février, on sent vraiment que çà bosse au W3C, et l'avenir est très très prometteur pour le HTML5, notamment ...
Cliquez pour lire la suite de l'article par Gio
Forum
FONCTION EXCEL VBAFONCTION EXCEL VBA par samanta26
Cliquez pour lire la suite par samanta26
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|