Delen via


Modulegegevens

Een module is een uitvoerbaar bestand of DLL-bestand. Elk proces bestaat uit een of meer modules. U kunt de lijst met modulegrepen voor een proces ophalen door de functie EnumProcessModules aan te roepen. Met deze functie wordt een matrix van HMODULE waarden ingevuld met de modulegrepen voor het opgegeven proces. De eerste module is het uitvoerbare bestand. Houd er rekening mee dat deze module-ingangen waarschijnlijk van een ander proces zijn, dus u kunt ze niet gebruiken met functies zoals GetModuleFileName. U kunt echter PSAPI-functies gebruiken om informatie over een module van een ander proces te verkrijgen.

In de volgende procedure wordt beschreven hoe u modulegegevens ophaalt uit een ander proces.

Modulegegevens ophalen uit een ander proces

  1. Roep de functie GetModuleBaseName aan. Deze functie gebruikt een procesgreep en een modulegreep als invoer en vult een buffer in met de basisnaam van een module (bijvoorbeeld Kernel32.dll). Een gerelateerde functie, GetModuleFileNameEx, gebruikt dezelfde parameters als invoer, maar retourneert het volledige pad naar de module (bijvoorbeeld C:\Windows\System32\Kernel32.dll).
  2. Roep de functie GetModuleInformation aan. Deze functie gebruikt een procesgreep en een modulehandgreep en vult een MODULEINFO structuur met het laadadres van de module, de grootte van de lineaire adresruimte die deze in beslag neemt en een aanwijzer naar het toegangspunt.

Als voor een toepassing modulegegevens voor het huidige proces zijn vereist, moet deze de functie GetModuleFileName gebruiken in plaats van de PSAPI-modulefuncties. Dit helpt de prestaties van toepassingen op twee manieren: de functie GetModuleFileName is efficiënter dan de functies van de PSAPI-module. Een toepassing kan voorkomen dat psapi.dll wordt geladen als er geen PSAPI-functies worden gebruikt.

De functies GetModuleBaseName en GetModuleFileNameEx zijn voornamelijk ontworpen voor gebruik door foutopsporingsprogramma's en vergelijkbare toepassingen die modulegegevens uit een ander proces moeten extraheren. Als de modulelijst in het doelproces is beschadigd of nog niet is geïnitialiseerd, of als de modulelijst tijdens de functieoproep verandert als gevolg van het laden of uitladen van DLL's, kunnen deze functies mislukken of onjuiste informatie retourneren.