Pillanatképek a rendszerről
A pillanatképek az eszköz súgófunkcióinak középpontjában állnak. A pillanatkép a rendszermemória egy vagy több lista aktuális állapotának írásvédett másolata: folyamatok, szálak, modulok és halom.
Az eszközt használó folyamatok segítenek ezeknek a listáknak a elérésében pillanatképekből, nem pedig közvetlenül az operációs rendszerből. A rendszermemória-listák a folyamatok indításakor és befejezésekor, a szálak létrehozása és megsemmisítése, a végrehajtható modulok betöltése és eltávolítása a rendszer memóriájából, valamint a halom létrehozása és megsemmisítése. A pillanatképekből származó információk használata megakadályozza az inkonzisztenciákat. Ellenkező esetben a lista módosítása esetén előfordulhat, hogy egy szál helytelenül lépi át a listát, vagy hozzáférés-szabálysértést (GP-hibát) okoz. Ha például egy alkalmazás más szálak létrehozásakor vagy leállásakor lépi át a szállistát, az alkalmazás által a szállistán való áthaladáshoz használt információk elavulttá válhatnak, és hibát okozhatnak, ha az alkalmazás bejárja a listát.
A rendszermemória pillanatképének készítéséhez használja a CreateToolhelp32Snapshot függvényt. A függvény meghívásakor a pillanatképek tartalmának szabályozásához adjon meg egy vagy több értéket a következő értékek közül:
- TH32CS_SNAPHEAPLIST
- TH32CS_SNAPMODULE
- TH32CS_SNAPPROCESS
- TH32CS_SNAPTHREAD
A TH32CS_SNAPHEAPLIST és TH32CS_SNAPMODULE értékek folyamatspecifikusak. Ha ezek az értékek meg vannak adva, a rendszer a megadott folyamat halom- és modullistáit tartalmazza a pillanatképben. Ha a folyamatazonosítóként nulla értéket ad meg, a rendszer az aktuális folyamatot használja. A TH32CS_SNAPTHREAD érték mindig létrehoz egy rendszerszintű pillanatképet, még akkor is, ha a rendszer átad egy folyamatazonosítót CreateToolhelp32Snapshot.
Az összes folyamat halom- vagy modulállapotának számbavételéhez adja meg az aktuális folyamat TH32CS_SNAPALL értékét és folyamatazonosítóját. Ezután a pillanatkép minden további folyamatához hívja meg újra a CreateToolhelp32Snapshot, és adja meg a folyamatazonosítót és a TH32CS_SNAPHEAPLIST vagy TH32CS_SNAPMODULE értéket.
A CreateToolhelp32Snapshot kiterjesztett hibaállapotkódját a GetLastError függvény használatával kérheti le.
Ha a folyamat egy pillanatkép használatával fejeződik be, a CloseHandle függvénnyel semmisítse meg. Ha nem pusztít el egy pillanatképet, a folyamat kiszivárog a memóriából, amíg ki nem lép, és ekkor a rendszer visszanyeri a memóriát.
Jegyzet
A pillanatkép-leíró fájlleíróként működik, és ugyanazok a szabályok vonatkoznak azokra a folyamatokra és szálakra, amelyekben használható. A leíró örökölhető értékének megadásához hozza létre a pillanatképet a TH32CS_INHERIT értékkel.
Kapcsolódó témakörök