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:
- Se il thread ha chiamato la funzioneSetThreadDesktop, si connette al desktop specificato.
- Se il thread non ha chiamato SetThreadDesktop, si connette al desktop ereditato dal processo padre.
- Se il thread non ha chiamato SetThreadDesktop e non ha ereditato un desktop, il sistema tenta di aprire per l'accesso MAXIMUM_ALLOWED e connettersi a un desktop come indicato di seguito:
- Se è stato specificato un nome desktop nel lpDesktop membro della struttura STARTUPINFO utilizzata 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 finestra a cui è connesso il processo.
Il desktop assegnato durante questo processo di connessione non può essere chiuso chiamando la funzioneclosedesktop.
Quando un processo si connette a un desktop, il sistema cerca nella tabella handle del processo gli handle ereditati. Il sistema usa il primo handle desktop trovato. Se si desidera che un processo figlio si connetta 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.
Argomenti correlati