Condividi tramite


Funzione NtOpenProcess (ntddk.h)

La routine ZwOpenProcess apre un handle a un oggetto process 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 del processo nella variabile a cui punta questo parametro.

[in] DesiredAccess

Valore ACCESS_MASK contenente 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 seguenti.

[in, optional] ClientId

Puntatore a un ID client che identifica il thread il cui processo deve essere aperto. Questo parametro deve essere un puntatore non NULL a un ID client valido. Per altre informazioni, vedere la sezione Osservazioni seguenti.

Valore restituito

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

Codice restituito Descrizione
STATUS_INVALID_PARAMETER_MIX Il chiamante ha fornito un nome dell'oggetto o non è riuscito a specificare 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.

Commenti

Come accade con i gestori del kernel aperti da altre chiamate di servizio di sistema, ad esempio ZwCreateKey e ZwCreateFile, il chiamante è responsabile della chiamata di 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 si verifica in modalità utente, è necessario usare il nome "NtOpenProcess" anziché "ZwOpenProcess".

Per le chiamate dai driver in modalità kernel, le versioni NtXxx e ZwXxx 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 Uso di nt e zw versioni delle routine di Servizi di sistema nativo.

Requisiti

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

Vedi anche

ACCESS_MASK

OBJECT_ATTRIBUTES

Uso di nt e zw versioni delle routine di Servizi di sistema nativo