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 herstellt.
- Wenn der Thread SetThreadDesktopnicht aufgerufen hat, stellt er eine Verbindung mit dem Desktop auf, der vom übergeordneten Prozess geerbt wurde.
- Wenn der Thread SetThreadDesktop nicht aufgerufen hat und keinen Desktop erbt, versucht das System wie folgt, für DEN MAXIMAL ZULÄSSIGen Zugriff zu öffnen und eine Verbindung mit _ einem Desktop herzustellen:
- Wenn im lpDesktop-Element der STARTUPINFO-Struktur, die beim Erstellen des Prozesses verwendet wurde, ein Desktopname angegeben wurde, stellt der Thread eine Verbindung mit dem angegebenen Desktop sicher.
- Andernfalls wird der Thread mit dem Standarddesktop der Fensterstation verbunden, mit der der Prozess verbunden ist.
Der während dieses Verbindungsprozesses zugewiesene Desktop kann nicht durch Aufrufen der CloseDesktop-Funktion geschlossen werden.
Wenn ein Prozess eine Verbindung mit einem Desktop herstellen soll, durchsucht das System die Handletabelle des Prozesses nach geerbten Handles. Das System verwendet das erste gefundene Desktophand handle. Wenn ein untergeordneter Prozess eine Verbindung mit einem bestimmten geerbten Desktop herstellen soll, müssen Sie sicherstellen, dass nur das gewünschte Handle als vererbbar gekennzeichnet ist. Wenn ein untergeordneter Prozess mehrere Desktophandles erbt, sind die Ergebnisse der Desktopverbindung nicht definiert.
Handles für einen Desktop, der vom System geöffnet wird, während ein Prozess mit einem Desktop verbunden wird, sind nicht vererbbar.