Share via


EnumProcessModulesEx-Funktion (psapi.h)

Ruft ein Handle für jedes Modul im angegebenen Prozess ab, das die angegebenen Filterkriterien erfüllt.

Syntax

BOOL EnumProcessModulesEx(
  [in]  HANDLE  hProcess,
  [out] HMODULE *lphModule,
  [in]  DWORD   cb,
  [out] LPDWORD lpcbNeeded,
  [in]  DWORD   dwFilterFlag
);

Parameter

[in] hProcess

Ein Handle für den Prozess.

[out] lphModule

Ein Array, das die Liste der Modulhandles empfängt.

[in] cb

Die Größe des lphModule-Arrays in Bytes.

[out] lpcbNeeded

Die Anzahl der Bytes, die zum Speichern aller Modulhandles im lphModule-Array erforderlich sind.

[in] dwFilterFlag

Die Filterkriterien. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
LIST_MODULES_32BIT
0x01
Listen Sie die 32-Bit-Module auf.
LIST_MODULES_64BIT
0x02
Listen Sie die 64-Bit-Module auf.
LIST_MODULES_ALL
0x03
Listet alle Module auf.
LIST_MODULES_DEFAULT
0x0
Verwendet das Standardverhalten.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Die EnumProcessModulesEx-Funktion ist in erster Linie für die Verwendung durch Debugger und ähnliche Anwendungen konzipiert, die Modulinformationen aus einem anderen Prozess extrahieren müssen. Wenn die Modulliste im Zielprozess beschädigt oder noch nicht initialisiert ist oder sich die Modulliste während des Funktionsaufrufs ändert, weil DLLs geladen oder entladen werden, schlägt EnumProcessModulesEx möglicherweise fehl oder gibt falsche Informationen zurück.

Diese Funktion ist in erster Linie für 64-Bit-Anwendungen vorgesehen. Wenn die Funktion von einer 32-Bit-Anwendung aufgerufen wird, die unter WOW64 ausgeführt wird, wird die Option dwFilterFlag ignoriert, und die Funktion liefert die gleichen Ergebnisse wie die EnumProcessModules-Funktion .

Es empfiehlt sich, ein großes Array von HMODULE-Werten anzugeben, da es schwierig ist, vorherzusagen, wie viele Module zum Zeitpunkt des Aufrufs von EnumProcessModulesEx im Prozess vorhanden sein werden. Um festzustellen, ob das lphModule-Array zu klein ist, um alle Modulhandles für den Prozess zu speichern, vergleichen Sie den in lpcbNeeded zurückgegebenen Wert mit dem in cb angegebenen Wert. Wenn lpcbNeeded größer als cb ist, erhöhen Sie die Größe des Arrays, und rufen Sie EnumProcessModulesEx erneut auf.

Um zu bestimmen, wie viele Module durch den Aufruf von EnumProcessModulesEx aufgezählt wurden, dividieren Sie den resultierenden Wert im lpcbNeeded-Parameter durch sizeof(HMODULE).

Die EnumProcessModulesEx-Funktion ruft keine Handles für Module ab, die mit dem flag LOAD_LIBRARY_AS_DATAFILE geladen wurden. Weitere Informationen finden Sie unter LoadLibraryEx.

Rufen Sie CloseHandle für keine der von dieser Funktion zurückgegebenen Handles auf. Die Informationen stammen aus einem Momentaufnahme, sodass keine Ressourcen freizugeben sind.

Verwenden Sie die CreateToolhelp32Snapshot-Funktion, um eine Momentaufnahme der angegebenen Prozesse und der von diesen Prozessen verwendeten Heaps, Module und Threads zu übernehmen.

Ab Windows 7 und Windows Server 2008 R2 richtet Psapi.h Versionsnummern für die PSAPI-Funktionen ein. Die PSAPI-Versionsnummer wirkt sich auf den Namen aus, der zum Aufrufen der Funktion und der Bibliothek verwendet wird, die ein Programm laden muss.

Wenn PSAPI_VERSION 2 oder höher ist, wird diese Funktion als K32EnumProcessModulesEx in Psapi.h definiert und in Kernel32.lib und Kernel32.dll exportiert. Wenn PSAPI_VERSION 1 ist, wird diese Funktion als EnumProcessModulesEx in Psapi.h definiert und in Psapi.lib exportiert und Psapi.dll als Wrapper, der K32EnumProcessModulesEx aufruft.

Programme, die unter früheren Versionen von Windows sowie windows 7 und höheren Versionen ausgeführt werden müssen, sollten diese Funktion immer als EnumProcessModulesEx aufrufen. Fügen Sie dem TARGETLIBS-Makro Psapi.lib hinzu, und kompilieren Sie das Programm mit –DPSAPI_VERSION=1, um die richtige Auflösung von Symbolen sicherzustellen. Laden Sie Psapi.dll, um dynamische Laufzeitverknüpfung zu verwenden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile psapi.h (einschließlich Windows.h)
Bibliothek Kernel32.lib unter Windows 7 und Windows Server 2008 R2; Psapi.lib (wenn PSAPI_VERSION=1) unter Windows 7 und Windows Server 2008 R2; Psapi.lib unter Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP
DLL Kernel32.dll unter Windows 7 und Windows Server 2008 R2; Psapi.dll (wenn PSAPI_VERSION=1) unter Windows 7 und Windows Server 2008 R2; Psapi.dll unter Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP

Weitere Informationen

CreateToolhelp32Snapshot

EnumProcesses

Modulinformationen

PSAPI-Funktionen