ZwOpenProcessTokenEx, fonction (ntifs.h)
La routine ZwOpenProcessTokenEx ouvre le jeton d’accès associé à un processus.
Syntaxe
NTSYSAPI NTSTATUS ZwOpenProcessTokenEx(
[in] HANDLE ProcessHandle,
[in] ACCESS_MASK DesiredAccess,
[in] ULONG HandleAttributes,
[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.
[in] HandleAttributes
Attributs pour le handle de jeton d’accès. Seul OBJ_KERNEL_HANDLE est actuellement pris en charge. Si l’appelant n’est pas en cours d’exécution dans le contexte de processus système, il doit spécifier OBJ_KERNEL_HANDLE pour ce paramètre.
[out] TokenHandle
Pointeur vers une variable allouée à l’appelant qui reçoit un handle pour le jeton d’accès nouvellement ouvert.
Valeur retournée
ZwOpenProcessTokenEx retourne STATUS_SUCCESS ou une erreur appropriée status. Les codes status d’erreur possibles sont les 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_INVALID_PARAMETER | Les HandleAttributes spécifiés n’incluaient pas OBJ_KERNEL_HANDLE. |
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
ZwOpenProcessTokenEx ouvre le jeton d’accès associé à un processus et retourne un handle pour ce jeton.
Tout handle obtenu en appelant ZwOpenProcessTokenEx doit finalement être libéré en appelant ZwClose.
Les routines de pilote qui s’exécutent dans un contexte de processus autre que celui du processus système doivent définir l’attribut OBJ_KERNEL_HANDLE pour le paramètre HandleAttributes de ZwOpenProcessTokenEx. Cela limite l’utilisation du handle retourné par ZwOpenProcessTokenEx aux processus exécutés en mode noyau. Sinon, le handle est accessible par le processus dans le contexte dans lequel le pilote est en cours d’exécution.
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.
Notes
Si l’appel à la fonction ZwOpenProcessTokenEx se produit en mode utilisateur, vous devez utiliser le nom « NtOpenProcessTokenEx » au lieu de « ZwOpenProcessTokenEx ».
Pour les appels provenant 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 Using Nt and Zw Versions of the Native System Services Routines.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP |
Plateforme cible | Universal |
En-tête | ntifs.h (include Ntifs.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Règles de conformité DDI | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |
Voir aussi
Utilisation des versions Nt et Zw des routines des services système natifs