Prozesshandles und -bezeichner

Wenn von der CreateProcess-Funktion ein neuer Prozess erstellt wird, werden Handles des neuen Prozesses und seines primären Threads zurückgegeben. Diese Handles werden mit Vollzugriffsrechten erstellt und können – vorbehaltlich der Überprüfung des Sicherheitszugriffs – in allen Funktionen verwendet werden, die Thread- oder Prozesshandles akzeptieren. Diese Handles können von untergeordneten Prozessen geerbt werden, abhängig vom Vererbungsflag, das beim Erstellen angegeben wird. Die Handles sind gültig, bis sie geschlossen werden, auch nachdem der Prozess oder Thread, den sie darstellen, beendet wurde.

Die CreateProcess-Funktion gibt auch einen Bezeichner zurück, der den Prozess im gesamten System eindeutig identifiziert. Ein Prozess kann die GetCurrentProcessId-Funktion verwenden, um einen eigenen Prozessbezeichner (auch als Prozess-ID oder PID bezeichnet) abzurufen. Der Bezeichner ist von der Erstellung des Prozesses bis zum Beenden des Prozesses gültig. Ein Prozess kann die Process32First-Funktion verwenden, um den Prozessbezeichner des übergeordneten Prozesses abzurufen.

Wenn Sie über einen Prozessbezeichner verfügen, können Sie das Prozesshandle abrufen, indem Sie die OpenProcess-Funktion aufrufen. Mit OpenProcess können Sie die Zugriffsrechte des Handles angeben und angeben, ob es geerbt werden kann.

Ein Prozess kann die GetCurrentProcess-Funktion verwenden, um ein Pseudohandle für sein eigenes Prozessobjekt abzurufen. Dieses Pseudohandle ist nur für den aufrufenden Prozess gültig. es kann nicht geerbt oder für die Verwendung durch andere Prozesse dupliziert werden. Um das tatsächliche Handle für den Prozess abzurufen, rufen Sie die DuplicateHandle-Funktion auf.