Conexão de thread para uma área de trabalho
Depois que um processo se conecta a uma estação de janela, o sistema atribui uma área de trabalho ao thread que está fazendo a conexão. O sistema determina a área de trabalho a ser atribuída ao thread de acordo com as seguintes regras:
- Se o thread tiver chamado a função SetThreadDesktop , ele se conectará à área de trabalho especificada.
- Se o thread não chamou SetThreadDesktop, ele se conectará à área de trabalho herdada do processo pai.
- Se o thread não chamou SetThreadDesktop e não herdou uma área de trabalho, o sistema tentará abrir para acesso MAXIMUM_ALLOWED e se conectar a uma área de trabalho da seguinte maneira:
- Se um nome da área de trabalho tiver sido especificado no membro lpDesktop da estrutura STARTUPINFO que foi usada quando o processo foi criado, o thread se conectará à área de trabalho especificada.
- Caso contrário, o thread se conectará à área de trabalho padrão da estação de janela à qual o processo se conectou.
A área de trabalho atribuída durante esse processo de conexão não pode ser fechada chamando a função CloseDesktop .
Quando um processo está se conectando a uma área de trabalho, o sistema pesquisa a tabela de identificadores do processo em busca de identificadores herdados. O sistema usa o primeiro identificador de área de trabalho encontrado. Se você quiser que um processo filho se conecte a uma área de trabalho herdada específica, verifique se o único identificador desejado está marcado como herdável. Se um processo filho herdar vários identificadores de área de trabalho, os resultados da conexão da área de trabalho serão indefinidos.
Identificadores para uma área de trabalho que o sistema abre ao conectar um processo a uma área de trabalho não são herdáveis.
Tópicos relacionados