Funzione NtOpenProcessToken (ntifs.h)

La routine NtOpenProcessToken apre il token di accesso associato a un processo e restituisce un handle che può essere usato per accedere a tale token.

Sintassi

__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenProcessToken(
  [in]  HANDLE      ProcessHandle,
  [in]  ACCESS_MASK DesiredAccess,
  [out] PHANDLE     TokenHandle
);

Parametri

[in] ProcessHandle

Gestire il processo il cui token di accesso deve essere aperto. L'handle deve avere accesso PROCESS_QUERY_INFORMATION. Utilizzare la macro NtCurrentProcess , definita in Ntddk.h, per specificare il processo corrente.

[in] DesiredAccess

ACCESS_MASK struttura che specifica i tipi richiesti di accesso al token di accesso. Questi tipi di accesso richiesti vengono confrontati con l'elenco DACL (Discretionary Access Control List) del token per determinare quali accessi vengono concessi o negati.

[out] TokenHandle

Puntatore a una variabile allocata dal chiamante che riceve un handle per il token di accesso appena aperto.

Valore restituito

NtOpenProcessToken restituisce STATUS_SUCCESS o uno stato di errore appropriato. I codici di stato di errore possibili includono quanto segue:

Codice restituito Descrizione
STATUS_ACCESS_DENIED ProcessHandle non ha avuto accesso PROCESS_QUERY_INFORMATION.
STATUS_INSUFFICIENT_RESOURCES Non è stato possibile allocare un nuovo handle di token.
STATUS_INVALID_HANDLE ProcessHandle non è un handle valido.
STATUS_OBJECT_TYPE_MISMATCH ProcessHandle non è un handle di processo.
STATUS_PRIVILEGE_NOT_HELD Il chiamante non dispone del privilegio (SeSecurityPrivilege) necessario per creare un handle di token con l'accesso specificato nel parametro DesiredAccess .
STATUS_QUOTA_EXCEEDED La quota di memoria del processo non è sufficiente per allocare l'handle del token.
STATUS_UNSUCCESSFUL Impossibile creare l'handle del token.

Commenti

Per specificare gli attributi per l'handle del token di accesso, usare invece NtOpenProcessTokenEx .

L'handle può essere accessibile dal processo nel cui contesto è in esecuzione il driver.

Qualsiasi handle ottenuto chiamando NtOpenProcessToken deve essere rilasciato chiamando NtClose.

Per altre informazioni sulla sicurezza e sul controllo di accesso, vedere Modello di sicurezza di Windows per sviluppatori di driver e la documentazione su questi argomenti in Windows SDK.

Per le chiamate da driver in modalità kernel, le versioni NtXxx e ZwXxx di una routine di Servizi di sistema nativi di Windows 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 .For more information about the Nt Xxx and Zw versions of the Native System Services Routines.

Requisiti

Requisito Valore
Intestazione ntifs.h
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Vedi anche

ACCESS_MASK

ACL

PsDereferencePrimaryToken

NtClose

NtOpenProcessTokenEx

NtOpenThreadTokenEx