Verarbeiten von Handles und Bezeichnern

Wenn ein neuer Prozess von der CreateProcess-Funktion erstellt wird, werden Handles des neuen Prozesses und seines primären Threads zurückgegeben. Diese Handles werden mit vollständigen Zugriffsrechten erstellt und können – unterliegt der Sicherheitszugriffsprüfung – 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 wurde. Die Handles sind bis zum Schließen gültig, 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 bekannt) zu erhalten. Der Bezeichner ist ab dem Zeitpunkt gültig, zu dem der Prozess erstellt wird, bis der Prozess beendet wurde. Ein Prozess kann die Process32First-Funktion verwenden, um den Prozessbezeichner des übergeordneten Prozesses zu erhalten.

Wenn Sie über einen Prozessbezeichner verfügen, können Sie das Prozesshand handle durch Aufrufen der OpenProcess-Funktion erhalten. 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 Pseudohand handle ist nur für den aufrufenden Prozess gültig. sie kann nicht geerbt oder für die Verwendung durch andere Prozesse dupliziert werden. Um das echte Handle für den Prozess zu erhalten, rufen Sie die DuplicateHandle-Funktion auf.