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

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

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

Рабочий стол, назначенный во время этого процесса подключения, невозможно закрыть путем вызова функции CloseDesktop .

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

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

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