Threadverbindung mit einem Desktop
Nachdem ein Prozess eine Verbindung mit einer Fensterstation hergestellt hat, weist das System dem Thread, der die Verbindung herstellt, einen Desktop zu. Das System bestimmt den Desktop, der dem Thread gemäß den folgenden Regeln zugewiesen werden soll:
- Wenn der Thread die SetThreadDesktop--Funktion aufgerufen hat, wird eine Verbindung mit dem angegebenen Desktop hergestellt.
- Wenn der Thread nicht SetThreadDesktop-aufgerufen hat, stellt er eine Verbindung mit dem Desktop her, der vom übergeordneten Prozess geerbt wurde.
- Wenn der Thread nicht SetThreadDesktop- aufgerufen und keinen Desktop geerbt hat, versucht das System, für MAXIMUM_ALLOWED Zugriff zu öffnen und eine Verbindung mit einem Desktop wie folgt herzustellen:
- Wenn ein Desktopname im lpDesktop Mitglied der STARTUPINFO- Struktur angegeben wurde, die beim Erstellen des Prozesses verwendet wurde, stellt der Thread eine Verbindung mit dem angegebenen Desktop her.
- Andernfalls verbindet sich der Thread mit dem Standarddesktop der Fensterstation, mit der der Prozess verbunden ist.
Der während dieses Verbindungsvorgangs zugewiesene Desktop kann nicht durch Aufrufen der CloseDesktop--Funktion geschlossen werden.
Wenn ein Prozess eine Verbindung mit einem Desktop herstellt, durchsucht das System die Handle-Tabelle des Prozesses nach geerbten Handles. Das System verwendet das erste gefundene Desktophandle. Wenn ein untergeordneter Prozess eine Verbindung mit einem bestimmten geerbten Desktop herstellen soll, müssen Sie sicherstellen, dass der einzige gewünschte Handle vererbbar ist. Wenn ein untergeordneter Prozess mehrere Desktophandles erbt, sind die Ergebnisse der Desktopverbindung nicht definiert.
Handles to a desktop that the system opens while connecting a process to a desktop are not inheritable.
Verwandte Themen