Condividi tramite


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 funzioneSetThreadDesktop, 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 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.

connessione di processo a una stazione finestra