Funzione NtOpenProcessTokenEx (ntifs.h)
La routine ntOpenProcessTokenEx 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 NtOpenProcessTokenEx(
[in] HANDLE ProcessHandle,
[in] ACCESS_MASK DesiredAccess,
[in] ULONG HandleAttributes,
[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.hper 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 di controllo di accesso discrezionale del token (DACL) per determinare quali accessi vengono concessi o negati.
[in] HandleAttributes
Attributi per l'handle del token di accesso. Attualmente è supportato solo OBJ_KERNEL_HANDLE. Se il chiamante non è in esecuzione nel contesto del processo di sistema, deve specificare OBJ_KERNEL_HANDLE per questo parametro.
[out] TokenHandle
Puntatore a una variabile allocata dal chiamante che riceve un handle per il token di accesso appena aperto.
Valore restituito
ntOpenProcessTokenEx 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_INVALID_PARAMETER | Il HandleAttributes specificato non include OBJ_KERNEL_HANDLE. |
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 di token. |
STATUS_UNSUCCESSFUL | Impossibile creare l'handle del token. |
Osservazioni
Qualsiasi handle ottenuto chiamando NtOpenProcessTokenEx deve essere rilasciato chiamando NtClose.
Le routine del driver eseguite in un contesto di processo diverso da quello del processo di sistema devono impostare l'attributo OBJ_KERNEL_HANDLE per il parametro HandleAttributes di NtOpenProcessTokenEx. Ciò limita l'uso dell'handle restituito da NtOpenProcessTokenEx ai processi in esecuzione in modalità kernel. In caso contrario, l'handle può essere accessibile dal processo nel cui contesto è in esecuzione il driver.
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 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 |
---|---|
client minimo supportato | Windows XP |
piattaforma di destinazione | Universale |
intestazione | ntifs.h (include Ntifs.h) |
libreria | NtosKrnl.lib |
dll | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
regole di conformità DDI | HwStorPortProhibitedDDIs, PowerIrpDDis |