Compartilhar via


Processar conexão com uma estação de janela

Um processo estabelece automaticamente uma conexão com uma estação de janela e área de trabalho quando chama pela primeira vez uma função USER32 ou GDI32 (diferente das funções de estação de janela e área de trabalho). O sistema determina a estação de janela à qual um processo se conecta de acordo com as seguintes regras:

  1. Se o processo tiver chamado a função SetProcessWindowStation , ele se conectará à estação de janela especificada nessa chamada.
  2. Se o processo não chamar SetProcessWindowStation, ele se conectará à estação de janela herdada do processo pai.
  3. Se o processo não chamou SetProcessWindowStation e não herdou uma estação de janela, o sistema tentará abrir para MAXIMUM_ALLOWED acesso e conectar-se a uma estação de janela da seguinte maneira:
    • Se um nome de estação de janela foi especificado no membro lpDesktop da estrutura STARTUPINFO que foi usada quando o processo foi criado, o processo se conecta à estação de janela especificada.
    • Caso contrário, se o processo estiver em execução na sessão de logon do usuário interativo, o processo se conectará à estação de janela interativa.
    • Se o processo estiver em execução em uma sessão de logon nãointerativa, o nome da estação de janela será formado com base no identificador de sessão de logon e será feita uma tentativa de abrir essa estação de janela. Se a operação aberta falhar porque essa estação de janela não existe, o sistema tentará criar a estação de janela e uma área de trabalho padrão.

A estação de janela atribuída durante esse processo de conexão não pode ser fechada chamando a função CloseWindowStation .

Quando um processo está se conectando a uma estação de janela, o sistema pesquisa a tabela de identificadores do processo em busca de identificadores herdados. O sistema usa o primeiro identificador de estação de janela encontrado. Se você quiser que um processo filho se conecte a uma determinada estação de janela herdada, verifique se apenas o identificador desejado está marcado como herdável. Se um processo filho herdar vários identificadores de estação de janela, os resultados da conexão da estação de janela serão indefinidos.

Identificadores para uma estação de janela que o sistema abre ao conectar um processo a uma estação de janela não são herdáveis.

Conexão de thread com uma área de trabalho