Freigeben über


Verarbeiten einer Verbindung mit einer Fensterstation

Ein Prozess stellt automatisch eine Verbindung mit einer Fensterstation und einem Desktop her, wenn er zum ersten Mal eine USER32- oder GDI32-Funktion aufruft (mit Ausnahme der Fensterstation und Desktopfunktionen). Das System bestimmt die Fensterstation, mit der ein Prozess verbunden ist, gemäß den folgenden Regeln:

  1. Wenn der Prozess die SetProcessWindowStation-Funktion aufgerufen hat, stellt er eine Verbindung mit der in diesem Aufruf angegebenen Fensterstation her.
  2. Wenn der Prozess SetProcessWindowStation nicht aufruft, stellt er eine Verbindung mit der Fensterstation her, die vom übergeordneten Prozess geerbt wurde.
  3. Wenn der Prozess SetProcessWindowStation nicht aufgerufen und keine Fensterstation geerbt hat, versucht das System, wie folgt zu öffnen, um MAXIMUM_ALLOWED Zugriff zu erhalten und eine Verbindung mit einer Fensterstation herzustellen:
    • Wenn ein Name der Fensterstation im lpDesktop-Element der STARTUPINFO-Struktur angegeben wurde, die beim Erstellen des Prozesses verwendet wurde, stellt der Prozess eine Verbindung mit der angegebenen Fensterstation her.
    • Wenn der Prozess in der Anmeldesitzung des interaktiven Benutzers ausgeführt wird, stellt der Prozess eine Verbindung mit der interaktiven Fensterstation her.
    • Wenn der Prozess in einer nicht interaktiven Anmeldesitzung ausgeführt wird, wird der Name der Fensterstation basierend auf dem Anmeldesitzungsbezeichner gebildet, und es wird versucht, diese Fensterstation zu öffnen. Wenn der Öffnenvorgang fehlschlägt, weil diese Fensterstation nicht vorhanden ist, versucht das System, die Fensterstation und einen Standarddesktop zu erstellen.

Die während dieses Verbindungsvorgangs zugewiesene Fensterstation kann nicht durch Aufrufen der CloseWindowStation-Funktion geschlossen werden.

Wenn ein Prozess eine Verbindung mit einer Fensterstation herstellt, durchsucht das System die Handletabelle des Prozesses nach geerbten Handles. Das System verwendet den ersten gefundenen Fensterstationshandle. Wenn ein untergeordneter Prozess eine Verbindung mit einer bestimmten geerbten Fensterstation herstellen soll, müssen Sie sicherstellen, dass nur das gewünschte Handle als vererbbar markiert ist. Wenn ein untergeordneter Prozess mehrere Fensterstationshandles erbt, sind die Ergebnisse der Fensterstationsverbindung nicht definiert.

Handles für eine Fensterstation, die das System beim Verbinden eines Prozesses mit einer Fensterstation öffnet, sind nicht vererbbar.

Threadverbindung mit einem Desktop