Funzione OpenProcess (processthreadsapi.h)
Apre un oggetto processo locale esistente.
Sintassi
HANDLE OpenProcess(
[in] DWORD dwDesiredAccess,
[in] BOOL bInheritHandle,
[in] DWORD dwProcessId
);
Parametri
[in] dwDesiredAccess
Accesso all'oggetto processo. Questo diritto di accesso viene controllato rispetto al descrittore di sicurezza per il processo. Questo parametro può essere uno o più dei diritti di accesso del processo.
Se il chiamante ha abilitato il privilegio SeDebugPrivilege, l'accesso richiesto viene concesso indipendentemente dal contenuto del descrittore di sicurezza.
[in] bInheritHandle
Se questo valore è TRUE, i processi creati da questo processo erediteranno l'handle. In caso contrario, i processi non ereditano questo handle.
[in] dwProcessId
Identificatore del processo locale da aprire.
Se il processo specificato è il processo di inattività del sistema (0x00000000), la funzione ha esito negativo e l'ultimo codice di errore è ERROR_INVALID_PARAMETER
. Se il processo specificato è il processo di sistema o uno dei processi client server Run-Time Subsystem (CSRSS), questa funzione ha esito negativo e l'ultimo codice di errore è ERROR_ACCESS_DENIED
dovuto al fatto che le restrizioni di accesso impediscono l'apertura del codice a livello di utente.
Se si usa GetCurrentProcessId come argomento per questa funzione, è consigliabile usare GetCurrentProcess anziché OpenProcess per migliorare le prestazioni.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è un handle aperto per il processo specificato.
Se la funzione ha esito negativo, il valore restituito è NULL. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Commenti
Per aprire un handle a un altro processo locale e ottenere diritti di accesso completi, è necessario abilitare il privilegio SeDebugPrivilege. Per altre informazioni, vedere Modifica dei privilegi in un token.
L'handle restituito dalla funzione OpenProcess può essere usato in qualsiasi funzione che richiede un handle per un processo, ad esempio le funzioni di attesa, purché siano stati richiesti i diritti di accesso appropriati.
Al termine dell'handle, assicurarsi di chiuderlo usando la funzione CloseHandle .
Esempio
Per un esempio, vedere Acquisizione di uno snapshot e visualizzazione di processi.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [app desktop | App UWP] |
Server minimo supportato | Windows Server 2003 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | processthreadsapi.h (include Windows.h in Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Libreria | Kernel32.lib |
DLL | Kernel32.dll |