Partager via


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 du jeton (DACL) pour déterminer quels accès sont accordés ou refusés.

[in] HandleAttributes

Attributs pour le handle de jeton d’accès. Seule OBJ_KERNEL_HANDLE est actuellement prise en charge. Si l’appelant n’est pas en cours d’exécution dans le contexte du processus système, il doit spécifier OBJ_KERNEL_HANDLE pour ce paramètre.

[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 de retour

ZwOpenProcessTokenEx retourne STATUS_SUCCESS ou un état d’erreur approprié. Les codes d’état d’erreur possibles sont les suivants :

Retourner le code Description
STATUS_ACCESS_DENIED ProcessHandle n’a pas 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 n’a pas le 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 s’exécutant en mode noyau. Sinon, le handle est accessible par le processus 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.

Note

Si l’appel à la fonction ZwOpenProcessTokenEx se produit en mode utilisateur, vous devez utiliser le nom «NtOpenProcessTokenEx» au lieu de «ZwOpenProcessTokenEx».

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 de 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.

Exigences

Exigence Valeur
client minimum pris en charge Windows XP
plateforme cible Universel
d’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

ACCESS_MASK

de liste de contrôle d’accès

psDereferencePrimaryToken

à l’aide de versions Nt et Zw des routines natives des services système

ZwClose

ZwOpenThreadTokenEx