Share via


Connessione thread a un desktop

Dopo che un processo si connette a una stazione finestra, il sistema assegna un desktop al thread che effettua la connessione. Il sistema determina il desktop da assegnare al thread in base alle regole seguenti:

  1. Se il thread ha chiamato la funzione SetThreadDesktop , si connette al desktop specificato.
  2. Se il thread non ha chiamato SetThreadDesktop, si connette al desktop ereditato dal processo padre.
  3. Se il thread non ha chiamato SetThreadDesktop e non ha ereditato un desktop, il sistema tenta di aprire per MAXIMUM_ALLOWED accesso e connettersi a un desktop come indicato di seguito:
    • Se è stato specificato un nome desktop nel membro lpDesktop della struttura STARTUPINFO usata al momento della creazione del processo, il thread si connette al desktop specificato.
    • In caso contrario, il thread si connette al desktop predefinito della stazione di finestra a cui è connesso il processo.

Impossibile chiudere il desktop assegnato durante questo processo di connessione chiamando la funzione CloseDesktop .

Quando un processo si connette a un desktop, il sistema cerca la tabella di handle del processo per gli handle ereditati. Il sistema usa il primo handle desktop trovato. Se si vuole che un processo figlio si connetti a un determinato desktop ereditato, è necessario assicurarsi che l'unico handle desiderato sia contrassegnato come ereditabile. Se un processo figlio eredita più handle desktop, i risultati della connessione desktop non sono definiti.

Gli handle in un desktop aperto dal sistema durante la connessione di un processo a un desktop non sono ereditabili.

Elaborazione della connessione a una stazione finestra