Подключение потока к рабочему столу
После подключения процесса к оконной станции система назначает рабочий стол потоку, который устанавливает подключение. Система определяет рабочий стол для назначения потоку в соответствии со следующими правилами:
- Если поток вызвал функцию SetThreadDesktop , он подключается к указанному рабочему столу.
- Если поток не вызвал SetThreadDesktop, он подключается к рабочему столу, унаследован от родительского процесса.
- Если поток не вызывал SetThreadDesktop и не наследовал рабочий стол, система пытается открыть для MAXIMUM_ALLOWED доступа и подключиться к рабочему столу следующим образом:
- Если имя рабочего стола указано в элементе lpDesktop структуры STARTUPINFO , которая использовалась при создании процесса, поток подключается к указанному рабочему столу.
- В противном случае поток подключается к рабочему столу по умолчанию оконной станции, к которой подключен процесс.
Рабочий стол, назначенный во время этого процесса подключения, невозможно закрыть путем вызова функции CloseDesktop .
Когда процесс подключается к рабочему столу, система выполняет поиск унаследованных дескрипторов в таблице дескрипторов процесса. Система использует первый дескриптор рабочего стола, который она находит. Если требуется, чтобы дочерний процесс подключался к определенному наследуемому рабочему столу, необходимо убедиться, что только нужный дескриптор помечен как наследуемый. Если дочерний процесс наследует несколько дескрипторов рабочего стола, результаты подключения к рабочему столу не определены.
Дескриптора на рабочем столе, который система открывает при подключении процесса к рабочему столу, не наследуются.
Связанные темы