Informace o modulu

Modul je spustitelný soubor nebo knihovna DLL. Každý proces se skládá z jednoho nebo více modulů. Seznam popisovačů modulu pro proces můžete načíst voláním funkce EnumProcessModules. Tato funkce vyplní pole hodnoty HMODULE popisovači modulu pro zadaný proces. Prvním modulem je spustitelný soubor. Nezapomeňte, že tyto popisovače modulů jsou pravděpodobně z nějakého jiného procesu, takže je nemůžete používat s funkcemi, jako je GetModuleFileName. K získání informací o modulu z jiného procesu ale můžete použít funkce PSAPI.

Následující postup popisuje, jak získat informace o modulu z jiného procesu.

Získání informací o modulu z jiného procesu

  1. Volejte funkci GetModuleBaseName. Tato funkce přijímá popisovač procesu a popisovač modulu jako vstup a vyplní vyrovnávací paměť základním názvem modulu (například Kernel32.dll). Související funkce, GetModuleFileNameEx, přebírá stejné parametry jako vstup, ale vrací úplnou cestu k modulu (například C:\Windows\System32\Kernel32.dll).
  2. Volejte funkci GetModuleInformation. Tato funkce přebírá popisovač procesu a popisovač modulu a vyplní MODULEINFO strukturu zatížení modulu, velikost lineárního adresního prostoru, který zabírá, a ukazatel na jeho vstupní bod.

Pokud aplikace vyžaduje informace o modulu pro aktuální proces, měla by místo funkcí modulu PSAPI použít funkci GetModuleFile Name. To pomáhá výkonu aplikace dvěma způsoby: funkce GetModuleFileName je efektivnější než funkce modulu PSAPI a aplikace se může vyhnout načítání psapi.dll, pokud nepoužívá žádné funkce PSAPI.

Funkce GetModuleBaseName a GetModuleFileNameEx jsou primárně určené pro použití ladicím programem a podobnými aplikacemi, které musí extrahovat informace o modulu z jiného procesu. Pokud je seznam modulů v cílovém procesu poškozen nebo ještě není inicializován nebo pokud se seznam modulů během volání funkce změní v důsledku načtení nebo uvolnění knihoven DLL, mohou tyto funkce selhat nebo vrátit nesprávné informace.