Experimente mit Virtual Memory Monitor



  • Ich spiele ein wenig mit der Speicherverwaltung herum und bin dabei z.B. über eine Programm "VMMAP" gestolpert, was von Processen die allocierten Speicherbereiche auflistet. Und zwar nicht nur die Heaps, was ja recht einfach ist, sondern auch die Bereiche im virtuellen Speicher.
    Dies versuche ich auch hinzubekommen, aber mir fehlt irgendwie der richtige Ansatz.

    In der MSDN habe ich nur die VM-Functions QueryWorkingSet und VirtualQueryEx gefunden. Aber so richtig komme ich mit denen nicht zurecht.
    VirtualQueryEx benötigt eine Adresse, aber die will ich ja gerade erst ermitteln und QueryWorkingSet liefert mir zwar eine Liste mit Pages, aber damit komme ich auch nicht zum selben Ergebnis, wie VMMAP.
    Kann mir da jemand weiter helfen?

    Der Code sieht etwa so aus:

    unsigned long * buffer;
    	unsigned long bufSize=0, l;
    	BOOL flag;
    	HANDLE hHp;
    	PPSAPI_WORKING_SET_BLOCK PPInfo;
    	MEMORY_BASIC_INFORMATION mInfo;
    	SYSTEM_INFO sInfo;
    	[...]
    	GetSystemInfo(&sInfo);
    	QueryWorkingSet( hProcess, &bufSize, 4);
    	bufSize = bufSize * 4 + 4;
    	hHp = HeapCreate(0, bufSize , 0);
    	buffer = HeapAlloc(hHp, 0, bufSize);
    	flag = QueryWorkingSet( hProcess, buffer, bufSize);
    	for (l = 0; l< *buffer; l++)
    	{
    		PPInfo = (unsigned long) buffer + sizeof(PSAPI_WORKING_SET_BLOCK) * l + 4;
    //		VirtualQueryEx( hProcess, PPInfo->VirtualPage, &mInfo, sizeof(MEMORY_BASIC_INFORMATION) );
    		VirtualQueryEx( hProcess, PPInfo->VirtualPage*sInfo.dwPageSize, &mInfo, sizeof(MEMORY_BASIC_INFORMATION) );
    	}
    	[...]
    

    Die Codequalität sei mal dahin gestellt, es geht mir um das Experimentieren 🙂


  • Mod

    Das Programm VMMAP wird im Detail in dem Buch "Advanced Windows Programming" von Jeffrey Richter diskutiert.

    Schau Dir den Code an. Er proboert einfach die entsprechenden Start-Adressen aus und füttert
    Siehe Kapitel 6. Abbildung 6-4



  • Auf das Buch habe ich lieder keinen Zugriff. Gibt es noch andere Quellen?
    Meinst Du dieses Buch:
    http://www.amazon.de/Advanced-Windows-Jeffrey-M-Richter/dp/1572315482/ref=sr_1_2?s=books-intl-de&ie=UTF8&qid=1308119682&sr=1-2


  • Mod

    Jupp!



  • Hmmm.... Das Buch ist 15 Jahre alt, wie paßt das zu einem aktuelleren PSDK?


  • Mod

    Dragonling schrieb:

    Hmmm.... Das Buch ist 15 Jahre alt, wie paßt das zu einem aktuelleren PSDK?

    An dem was in diesem Buch beschrieben wird, hat sich so gut wie nichts geändert, es ist genauso gültig wie der "Petzold".


Anmelden zum Antworten