Fonction NtOpenProcessToken (ntifs.h)
La routine NtOpenProcessToken ouvre le jeton d’accès associé à un processus et retourne un handle qui peut être utilisé pour accéder à ce jeton.
Syntaxe
__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenProcessToken(
[in] HANDLE ProcessHandle,
[in] ACCESS_MASK DesiredAccess,
[out] PHANDLE TokenHandle
);
Paramètres
[in] ProcessHandle
Gérez le processus dont le jeton d’accès doit être ouvert. Le handle doit avoir un accès PROCESS_QUERY_INFORMATION. Utilisez la macro NtCurrentProcess , définie dans Ntddk.h, pour spécifier le processus actuel.
[in] DesiredAccess
ACCESS_MASK structure spécifiant les types d’accès demandés au jeton d’accès. Ces types d’accès demandés sont comparés à la liste de contrôle d’accès discrétionnaire (DACL) du jeton pour déterminer quels accès sont accordés ou refusés.
[out] TokenHandle
Pointeur vers une variable allouée par l’appelant qui reçoit un handle vers le jeton d’accès nouvellement ouvert.
Valeur retournée
NtOpenProcessToken retourne STATUS_SUCCESS ou une status d’erreur appropriée. Les codes de status d’erreur possibles incluent les éléments suivants :
Code de retour | Description |
---|---|
STATUS_ACCESS_DENIED | ProcessHandle n’avait pas d’accès PROCESS_QUERY_INFORMATION. |
STATUS_INSUFFICIENT_RESOURCES | Impossible d’allouer un nouveau handle de jeton. |
STATUS_INVALID_HANDLE | ProcessHandle n’était pas un handle valide. |
STATUS_OBJECT_TYPE_MISMATCH | ProcessHandle n’était pas un handle de processus. |
STATUS_PRIVILEGE_NOT_HELD | L’appelant ne dispose pas du privilège (SeSecurityPrivilege) nécessaire pour créer un handle de jeton avec l’accès spécifié dans le paramètre DesiredAccess . |
STATUS_QUOTA_EXCEEDED | Le quota de mémoire du processus n’est pas suffisant pour allouer le handle de jeton. |
STATUS_UNSUCCESSFUL | Impossible de créer le handle de jeton. |
Remarques
Pour spécifier des attributs pour le handle de jeton d’accès, utilisez plutôt NtOpenProcessTokenEx .
Le handle est accessible par le processus dans lequel le pilote est en cours d’exécution.
Tout handle obtenu en appelant NtOpenProcessToken doit finalement être libéré en appelant NtClose.
Pour plus d’informations sur la sécurité et le contrôle d’accès, consultez Modèle de sécurité Windows pour les développeurs de pilotes et la documentation sur ces rubriques dans le Kit de développement logiciel (SDK) Windows.
Pour les appels à partir de pilotes en mode noyau, les versions NtXxx et ZwXxx d’une routine Windows Native System Services peuvent se comporter différemment dans la façon dont elles gèrent et interprètent les paramètres d’entrée. Pour plus d’informations sur la relation entre les versions NtXxx et ZwXxx d’une routine, consultez Utilisation des versions Nt et Zw des routines des services système natifs.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | ntifs.h |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |