Handle e identificatori dei processi
Quando viene creato un nuovo processo dalla funzione CreateProcess , vengono restituiti handle del nuovo processo e del relativo thread primario. Questi handle vengono creati con diritti di accesso completi e , soggetti al controllo di accesso alla sicurezza, possono essere usati in una delle funzioni che accettano thread o handle di processo. Questi handle possono essere ereditati dai processi figlio, a seconda del flag di ereditarietà specificato al momento della creazione. Gli handle sono validi fino a quando non vengono chiusi, anche dopo la chiusura del processo o del thread che rappresentano.
La funzione CreateProcess restituisce anche un identificatore che identifica in modo univoco il processo in tutto il sistema. Un processo può usare la funzione GetCurrentProcessId per ottenere il proprio identificatore di processo (noto anche come ID processo o PID). L'identificatore è valido dal momento in cui il processo viene creato fino alla fine del processo. Un processo può usare la funzione Process32First per ottenere l'identificatore del processo padre.
Se si dispone di un identificatore di processo, è possibile ottenere l'handle del processo chiamando la funzione OpenProcess . OpenProcess consente di specificare i diritti di accesso dell'handle e se può essere ereditato.
Un processo può usare la funzione GetCurrentProcess per recuperare uno pseudo handle nel proprio oggetto process. Questo pseudo handle è valido solo per il processo chiamante; non può essere ereditato o duplicato per l'uso da parte di altri processi. Per ottenere l'handle reale al processo, chiamare la funzione DuplicateHandle .