Process Connection to a Window Station
A process automatically establishes a connection to a window station and desktop when it first calls a USER32 or GDI32 function (other than the window station or desktop functions) that must go to the Win32 server. The Win32 server determines the window station to which a process connects according to the following rules:
-
If the process has called the SetProcessWindowStation function, it connects to the window station specified in that call.
-
If the process did not call SetProcessWindowStation, it connects to the window station inherited from the parent process.
-
If the process did not call SetProcessWindowStation and did not inherit a window station, the Win32 server attempts to open for MAXIMUM_ALLOWED access and connect to a window station as follows:
-
If a window station name was specified in the lpDesktop member of the STARTUPINFO structure that was passed to the CreateProcess function when the process was created, the process connects to the specified window station.
-
Otherwise, if the process is running in the logon session of the interactive user, the process connects to the interactive window station.
-
If the process is running in a noninteractive logon session, the window station name is formed based on the logon session identifier and an attempt is made to open that window station. If the open operation fails because this window station does not exist, Win32 tries to create the window station and a default desktop.