Поделиться через


Подключение к оконной станции

Процесс автоматически устанавливает подключение к станции окон и рабочему столу при первом вызове функции USER32 или GDI32 (кроме станции окон и настольных функций). Система определяет оконную станцию, к которой подключается процесс, в соответствии со следующими правилами:

  1. Если процесс вызвал функцию SetProcessWindowStation, он подключается к станции окон, указанной в этом вызове.
  2. Если процесс не вызывал SetProcessWindowStation, он подключается к оконной станции, унаследованной от родительского процесса.
  3. Если процесс не вызывал SetProcessWindowStation и не наследовал оконную станцию, система пытается открыть доступ с правами MAXIMUM_ALLOWED и подключиться к оконной станции следующим образом:
    • Если имя оконной станции было указано в члене структуры lpDesktopSTARTUPINFO, которая использовалась при создании процесса, то процесс подключается к указанной оконной станции.
    • В противном случае, если процесс запускается в сеансе входа интерактивного пользователя, процесс подключается к интерактивной оконной станции.
    • Если процесс выполняется в неинтерактивном сеансе входа, имя оконной станции формируется на основе идентификатора сеанса входа и выполняется попытка открыть эту оконную станцию. Если открытая операция завершается ошибкой, так как эта станция окон не существует, система пытается создать станцию окон и рабочий стол по умолчанию.

Оконная станция, назначенная в процессе подключения, не может быть закрыта путем вызова функции CloseWindowStation.

При подключении процесса к оконной станции система осуществляет поиск в таблице дескрипторов процесса для унаследованных дескрипторов. Система использует первый дескриптор оконной станции, который она находит. Если требуется, чтобы дочерний процесс подключался к определенной унаследованной станции окон, необходимо убедиться, что только нужный дескриптор помечен как наследуемый. Если дочерний процесс наследует несколько дескрипторов оконной станции, результаты подключения оконной станции не определены.

Дескрипторы оконной станции, открываемой системой при подключении процесса к оконной станции, не наследуются.

подключение потока к рабочему столу