Freigeben über


Threadhandles und Bezeichner

Wenn ein neuer Thread von der CreateThread - oder CreateRemoteThread-Funktion erstellt wird, wird ein Handle für den Thread zurückgegeben. Standardmäßig verfügt dieses Handle über Vollzugriffsrechte und kann – vorbehaltlich der Überprüfung des Sicherheitszugriffs – in allen Funktionen verwendet werden, die ein Threadhandle akzeptieren. Dieses Handle kann je nach dem Vererbungsflag, das bei der Erstellung angegeben wurde, von untergeordneten Prozessen geerbt werden. Das Handle kann von DuplicateHandle dupliziert werden, wodurch Sie ein Threadhandle mit einer Teilmenge der Zugriffsrechte erstellen können. Das Handle ist gültig, bis er geschlossen wird, auch nachdem der thread, den es darstellt, beendet wurde.

Die Funktionen CreateThread und CreateRemoteThread geben auch einen Bezeichner zurück, der den Thread im gesamten System eindeutig identifiziert. Ein Thread kann die GetCurrentThreadId-Funktion verwenden, um einen eigenen Threadbezeichner abzurufen. Die Bezeichner sind von der Erstellung des Threads bis zum Beenden des Threads gültig. Beachten Sie, dass kein Threadbezeichner jemals 0 ist.

Wenn Sie über einen Threadbezeichner verfügen, können Sie das Threadhandle abrufen, indem Sie die OpenThread-Funktion aufrufen. Mit OpenThread können Sie die Zugriffsrechte des Handles angeben und angeben, ob es vererbt werden kann.

Ein Thread kann die GetCurrentThread-Funktion verwenden, um ein Pseudohandle für sein eigenes Threadobjekt abzurufen. Dieses Pseudohandle ist nur für den aufrufenden Prozess gültig. sie kann nicht vererbt oder dupliziert werden, um sie von anderen Prozessen zu verwenden. Verwenden Sie die DuplicateHandle-Funktion , um das eigentliche Handle für den Thread abzurufen, wenn ein Pseudohandle vorhanden ist.

Um die Threads eines Prozesses aufzulisten, verwenden Sie die Funktionen Thread32First und Thread32Next .