Sdílet prostřednictvím


Snímky systému

Snímky jsou jádrem funkcí nápovědy nástroje. Snímek je kopie aktuálního stavu jednoho nebo několika následujících seznamů, které se nacházejí v systémové paměti: procesy, vlákna, moduly a haldy.

Procesy, které používají nástroje, pomáhají funkcím přistupovat k těmto seznamům ze snímků místo přímo z operačního systému. Seznamy v systémové paměti se mění, když jsou spuštěny a ukončeny procesy, vlákna jsou vytvořena a zničena, spustitelné moduly jsou načteny a uvolněny ze systémové paměti a haldy jsou vytvořeny a zničeny. Použití informací ze snímku brání nekonzistence. V opačném případě by změny v seznamu mohly způsobit nesprávné procházení vlákna nebo způsobit narušení přístupu (chyba gp). Pokud například aplikace prochází seznam vláken, zatímco jsou vytvořena nebo ukončena jiná vlákna, mohou být informace, které aplikace používá k procházení seznamu vláken, zastaralá a může způsobit chybu pro aplikaci procházející seznamem.

Pokud chcete pořídit snímek systémové paměti, použijte funkci CreateToolhelp32Snapshot. Obsah snímku můžete řídit zadáním jedné nebo více následujících hodnot při volání této funkce:

  • TH32CS_SNAPHEAPLIST
  • TH32CS_SNAPMODULE
  • TH32CS_SNAPPROCESS
  • TH32CS_SNAPTHREAD

Hodnoty TH32CS_SNAPHEAPLIST a TH32CS_SNAPMODULE jsou specifické pro proces. Při zadání těchto hodnot se do snímku zahrnou haldy a seznamy modulů zadaného procesu. Pokud jako identifikátor procesu zadáte nulu, použije se aktuální proces. Hodnota TH32CS_SNAPTHREAD vždy vytvoří snímek v celém systému, i když je identifikátor procesu předán CreateToolhelp32Snapshot.

Chcete-li zobrazit výčet stavu haldy nebo modulu pro všechny procesy, zadejte hodnotu TH32CS_SNAPALL a identifikátor procesu aktuálního procesu. Potom pro každý další proces snímku zavolejte CreateToolhelp32Snapshot znovu, zadejte jeho identifikátor procesu a TH32CS_SNAPHEAPLIST nebo TH32CS_SNAPMODULE hodnotu.

Rozšířený stavový kód chyby pro CreateToolhelp32Snapshot můžete načíst pomocí funkce GetLastError.

Po dokončení procesu pomocí snímku ho odstraňte pomocí funkce CloseHandle. Pokud snímek nezničíte, proces nevrácí paměť, dokud se neukončí, a systém paměť uvolní.

Poznámka

Popisovač snímku funguje jako popisovač souboru a podléhá stejným pravidlům týkajícím se procesů a vláken, ve kterých se dá použít. Pokud chcete určit, že je popisovač zděděný, vytvořte snímek pomocí hodnoty TH32CS_INHERIT.

 

pořízení snímku a zobrazení procesů