Modulinformációk

A modul végrehajtható fájl vagy DLL. Minden folyamat egy vagy több modulból áll. A EnumProcessModules függvény meghívásával lekérheti a folyamat modulfogópontjainak listáját. Ez a függvény kitölti a HMODULE értékek tömbét a megadott folyamat modulfogópontjaival. Az első modul a végrehajtható fájl. Ne feledje, hogy ezek a modulfogópontok valószínűleg valamilyen más folyamatból származnak, ezért nem használhatja őket olyan függvényekkel, mint a GetModuleFileName. A PSAPI-függvények azonban egy modulra vonatkozó információk egy másik folyamatból való lekéréséhez használhatók.

Az alábbi eljárás azt ismerteti, hogyan szerezhet be modulinformációkat egy másik folyamatból.

Moduladatok lekérése egy másik folyamatból

  1. Hívja meg a GetModuleBaseName függvényt. Ez a függvény egy folyamatleírót és egy modulfogópontot vesz fel bemenetként, és egy puffert tölt ki egy modul alapnevével (például Kernel32.dll). Egy kapcsolódó függvény, GetModuleFileNameEx, ugyanazokat a paramétereket veszi fel, mint a bemenet, de visszaadja a modul teljes elérési útját (például C:\Windows\System32\Kernel32.dll).
  2. Hívja meg a GetModuleInformation függvényt. Ez a függvény egy folyamatleírót és egy modulfogópontot használ, és kitölt egy MODULEINFO struktúrát a modul terhelési címével, az általa foglalt lineáris címtér méretével és a belépési pontjára mutató mutatóval.

Ha egy alkalmazásnak modulinformációra van szüksége az aktuális folyamathoz, a PSAPI-modulfüggvények helyett a GetModuleFileName függvényt kell használnia. Ez kétféleképpen segíti az alkalmazások teljesítményét: a GetModuleFileName függvény hatékonyabb, mint a PSAPI-modulfüggvények, és az alkalmazás elkerülheti a psapi.dll betöltését, ha nem használ PSAPI-függvényeket.

A GetModuleBaseName és GetModuleFileNameEx függvényeket elsősorban hibakeresők és hasonló alkalmazások számára tervezték, amelyeknek modulinformációkat kell kinyerniük egy másik folyamatból. Ha a célfolyamatban lévő modullista sérült vagy még nincs inicializálva, vagy ha a modullista a függvényhívás során módosul a DLL-ek betöltése vagy törlése miatt, ezek a függvények sikertelenek lehetnek, vagy helytelen információkat adhatnak vissza.