Momentopnamen van het systeem
Momentopnamen vormen de kern van de Help-functies van het hulpprogramma. Een momentopname is een alleen-lezen kopie van de huidige status van een of meer van de volgende lijsten die zich in het systeemgeheugen bevinden: processen, threads, modules en heaps.
Processen die hulpprogramma's gebruiken, helpen functies toegang te krijgen tot deze lijsten vanuit momentopnamen in plaats van rechtstreeks vanuit het besturingssysteem. De lijsten in systeemgeheugenwijziging wanneer processen worden gestart en beƫindigd, threads worden gemaakt en vernietigd, uitvoerbare modules worden geladen en uit het systeemgeheugen verwijderd, en heaps worden gemaakt en vernietigd. Het gebruik van gegevens uit een momentopname voorkomt inconsistenties. Anders kunnen wijzigingen in een lijst ertoe leiden dat een thread de lijst onjuist doorkruist of een toegangsfout veroorzaakt (een GP-fout). Als een toepassing bijvoorbeeld de threadlijst doorkruist terwijl andere threads worden gemaakt of beƫindigd, kan informatie die de toepassing gebruikt om de threadlijst te doorlopen, verouderd raken en kan er een fout optreden voor de toepassing die de lijst doorkruist.
Als u een momentopname van het systeemgeheugen wilt maken, gebruikt u de functie CreateToolhelp32Snapshot. U kunt de inhoud van een momentopname beheren door een of meer van de volgende waarden op te geven bij het aanroepen van deze functie:
- TH32CS_SNAPHEAPLIST
- TH32CS_SNAPMODULE
- TH32CS_SNAPPROCESS
- TH32CS_SNAPTHREAD
De waarden TH32CS_SNAPHEAPLIST en TH32CS_SNAPMODULE zijn specifiek voor processen. Wanneer deze waarden zijn opgegeven, worden de heap- en modulelijsten van het opgegeven proces opgenomen in de momentopname. Als u nul opgeeft als proces-id, wordt het huidige proces gebruikt. De TH32CS_SNAPTHREAD waarde maakt altijd een systeembrede momentopname, zelfs als een proces-id wordt doorgegeven aan CreateToolhelp32Snapshot-.
Als u de heap- of modulestatus voor alle processen wilt inventariseren, geeft u de TH32CS_SNAPALL-waarde en de proces-id van het huidige proces op. Roep vervolgens voor elk extra proces in de momentopname CreateToolhelp32Snapshot opnieuw aan, waarbij u de proces-id en de TH32CS_SNAPHEAPLIST of TH32CS_SNAPMODULE waarde opgeeft.
U kunt een uitgebreide foutcode voor CreateToolhelp32Snapshot- ophalen met behulp van de functie GetLastError.
Wanneer het proces is voltooid met behulp van een momentopname, vernietigt u het met behulp van de CloseHandle--functie. Als u een momentopname niet vernietigt, zal het proces geheugen lekken totdat het wordt afgesloten, op welk moment het systeem het geheugen vrijmaakt.
Notitie
De momentopnamehandgreep fungeert als een bestandsgreep en is onderworpen aan dezelfde regels met betrekking tot de processen en threads waarin deze kan worden gebruikt. Als u wilt opgeven dat de ingang kan worden overgenomen, maakt u de momentopname met behulp van de TH32CS_INHERIT waarde.
Verwante onderwerpen