EnumProcesses-Funktion (psapi.h)
Ruft den Prozessbezeichner für jedes Prozessobjekt im System ab.
Syntax
BOOL EnumProcesses(
[out] DWORD *lpidProcess,
[in] DWORD cb,
[out] LPDWORD lpcbNeeded
);
Parameter
[out] lpidProcess
Ein Zeiger auf ein Array, das die Liste der Prozessbezeichner empfängt.
[in] cb
Die Größe des pProcessIds-Arrays in Bytes.
[out] lpcbNeeded
Die Anzahl der im pProcessIds-Array zurückgegebenen Bytes.
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
Es empfiehlt sich, ein großes Array zu verwenden, da es schwierig ist, vorherzusagen, wie viele Prozesse zum Zeitpunkt des Aufrufs von EnumProcesses vorhanden sein werden.
Um zu bestimmen, wie viele Prozesse aufgelistet wurden, dividieren Sie den lpcbNeededed-Wert durch sizeof(DWORD). Es gibt keinen Hinweis, wenn der Puffer zu klein ist, um alle Prozessbezeichner zu speichern. Wenn lpcbNeeded gleichcb ist, sollten Sie den Aufruf daher mit einem größeren Array wiederholen.
Rufen Sie die OpenProcess-Funktion auf, um Prozesshandles für die Prozesse abzurufen, deren Bezeichner Sie gerade abgerufen haben.
Ab Windows 7 und Windows Server 2008 R2 erstellt Psapi.h Versionsnummern für die PSAPI-Funktionen. 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 in Psapi.h als K32EnumProcesses definiert und in Kernel32.lib und Kernel32.dll exportiert. Wenn PSAPI_VERSION 1 ist, wird diese Funktion in Psapi.h als EnumProcesses definiert und in Psapi.lib und Psapi.dll als Wrapper exportiert, der K32EnumProcesses 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 EnumProcesses aufrufen. Um die korrekte Auflösung von Symbolen sicherzustellen, fügen Sie Dem TARGETLIBS-Makro Psapi.lib hinzu, und kompilieren Sie das Programm mit –DPSAPI_VERSION=1. Laden Sie Psapi.dll, um die dynamische Laufzeitverknüpfung zu verwenden.
Beispiele
Ein Beispiel finden Sie unter Auflisten aller Prozesse oder Auflisten aller Module für einen Prozess.
Anforderungen
Unterstützte Mindestversion (Client) | Windows XP [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | psapi.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 |