Condividi tramite


Funzione NtOpenProcess (ntddk.h)

La routine ZwOpenProcess apre un handle a un oggetto processo e imposta i diritti di accesso a questo oggetto.

Sintassi

__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenProcess(
  [out]          PHANDLE            ProcessHandle,
  [in]           ACCESS_MASK        DesiredAccess,
  [in]           POBJECT_ATTRIBUTES ObjectAttributes,
  [in, optional] PCLIENT_ID         ClientId
);

Parametri

[out] ProcessHandle

Puntatore a una variabile di tipo HANDLE. La routine ZwOpenProcess scrive l'handle di processo nella variabile a cui punta questo parametro.

[in] DesiredAccess

Valore ACCESS_MASK che contiene i diritti di accesso richiesti dal chiamante all'oggetto processo.

[in] ObjectAttributes

Puntatore a una struttura OBJECT_ATTRIBUTES che specifica gli attributi da applicare all'handle dell'oggetto processo. Il campo ObjectName di questa struttura deve essere impostato su null. Per altre informazioni, vedere la sezione osservazioni seguente.

[in, optional] ClientId

Puntatore a un ID client che identifica il thread il cui processo deve essere aperto. Questo parametro deve essere un puntatore nullnull a un ID client valido. Per altre informazioni, vedere la sezione osservazioni seguente.

Valore restituito

zwOpenProcess restituisce STATUS_SUCCESS se la chiamata ha esito positivo. I possibili valori restituiti includono i codici di stato di errore seguenti:

Codice restituito Descrizione
STATUS_INVALID_PARAMETER_MIX Il chiamante ha fornito un nome di oggetto o non è riuscito a fornire un ID client.
STATUS_INVALID_CID L'ID client specificato non è valido.
STATUS_INVALID_PARAMETER I diritti di accesso richiesti non sono validi per un oggetto processo.
STATUS_ACCESS_DENIED Non è possibile concedere i diritti di accesso richiesti.

Osservazioni

Come accade con gli handle del kernel aperti da altre chiamate al servizio di sistema, ad esempio ZwCreateKey e ZwCreateFile, il chiamante è responsabile della chiamata ZwClose per chiudere l'handle quando non è più necessario.

Il parametro ClientId deve puntare a un ID client che identifica il thread il cui processo deve essere aperto. Inoltre, il campo ObjectName della struttura a cui punta ObjectAttributes deve essere impostato su NULL.

Se la chiamata a questa funzione viene eseguita in modalità utente, è necessario usare il nome "NtOpenProcess" anziché "ZwOpenProcess".

Per le chiamate da driver in modalità kernel, le NtXxx e ZwXxx versioni di una routine di Windows Native System Services possono comportarsi in modo diverso nel modo in cui gestiscono e interpretano i parametri di input. Per altre informazioni sulla relazione tra le versioni NtXxx e ZwXxx di una routine, vedere Using Nt and Zw Versions of the Native System Services Routines.

Fabbisogno

Requisito Valore
piattaforma di destinazione Universale
intestazione ntddk.h (include Ntddk.h, Ntifs.h)
libreria NtosKrnl.lib
dll NtosKrnl.exe
IRQL PASSIVE_LEVEL
regole di conformità DDI HwStorPortProhibitedDDIs, PowerIrpDDis

Vedere anche

ACCESS_MASK

OBJECT_ATTRIBUTES

uso di versioni Nt e Zw delle routine di Servizi di sistema nativi