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:

  1. Wenn der Thread die SetThreadDesktop-Funktion aufgerufen hat, stellt er eine Verbindung mit dem angegebenen Desktop her.
  2. Wenn der Thread SetThreadDesktop nicht aufgerufen hat, stellt er eine Verbindung mit dem Desktop her, der vom übergeordneten Prozess geerbt wurde.
  3. Wenn der Thread SetThreadDesktop nicht aufgerufen und keinen Desktop geerbt hat, versucht das System, für MAXIMUM_ALLOWED Zugriff zu öffnen und wie folgt eine Verbindung mit einem Desktop herzustellen:
    • Wenn im lpDesktop-Member der STARTUPINFO-Struktur , das beim Erstellen des Prozesses verwendet wurde, ein Desktopname angegeben wurde, stellt der Thread eine Verbindung mit dem angegebenen Desktop her.
    • Andernfalls stellt der Thread eine Verbindung mit dem Standarddesktop der Fensterstation her, 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 herstellt, durchsucht das System die Handle-Tabelle des Prozesses nach geerbten Handles. Das System verwendet das erste Desktophandle, das es findet. 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 markiert ist. Wenn ein untergeordneter Prozess mehrere Desktophandles erbt, sind die Ergebnisse der Desktopverbindung nicht definiert.

Handles für einen Desktop, den das System beim Verbinden eines Prozesses mit einem Desktop öffnet, sind nicht vererbbar.

Verarbeiten der Verbindung mit einer Fensterstation