Connexion de thread à un bureau

Une fois qu’un processus se connecte à une station de fenêtre, le système affecte un bureau au thread qui établit la connexion. Le système détermine le bureau à affecter au thread selon les règles suivantes :

  1. Si le thread a appelé la fonction SetThreadDesktop , il se connecte au bureau spécifié.
  2. Si le thread n’a pas appelé SetThreadDesktop, il se connecte au bureau hérité du processus parent.
  3. Si le thread n’a pas appelé SetThreadDesktop et n’a pas hérité d’un bureau, le système tente de s’ouvrir pour un accès MAXIMUM_ALLOWED et de se connecter à un bureau comme suit :
    • Si un nom de bureau a été spécifié dans le membre lpDesktop de la structure STARTUPINFO qui a été utilisé lors de la création du processus, le thread se connecte au bureau spécifié.
    • Sinon, le thread se connecte au bureau par défaut de la station de fenêtre à laquelle le processus s’est connecté.

Le bureau affecté pendant ce processus de connexion ne peut pas être fermé en appelant la fonction CloseDesktop .

Lorsqu’un processus se connecte à un bureau, le système recherche les handles hérités dans la table de handles du processus. Le système utilise le premier handle de bureau qu’il trouve. Si vous souhaitez qu’un processus enfant se connecte à un bureau hérité particulier, vous devez vous assurer que le seul handle souhaité est marqué comme pouvant être hérité. Si un processus enfant hérite de plusieurs handles de bureau, les résultats de la connexion de bureau ne sont pas définis.

Les handles sur un bureau que le système ouvre lors de la connexion d’un processus à un bureau ne sont pas héritables.

Traiter la connexion à une station de fenêtre