Partager via


Fonction NtOpenProcess (ntddk.h)

La routine ZwOpenProcess ouvre un handle à un objet de processus et définit les droits d’accès à cet objet.

Syntaxe

__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenProcess(
  [out]          PHANDLE            ProcessHandle,
  [in]           ACCESS_MASK        DesiredAccess,
  [in]           POBJECT_ATTRIBUTES ObjectAttributes,
  [in, optional] PCLIENT_ID         ClientId
);

Paramètres

[out] ProcessHandle

Pointeur vers une variable de type HANDLE. La routine ZwOpenProcess écrit le handle de processus dans la variable vers laquelle ce paramètre pointe.

[in] DesiredAccess

Valeur ACCESS_MASK qui contient les droits d’accès demandés par l’appelant à l’objet de processus.

[in] ObjectAttributes

Pointeur vers une structure de OBJECT_ATTRIBUTES qui spécifie les attributs à appliquer au handle de l’objet de processus. Le champ ObjectName de cette structure doit avoir la valeur NULL. Pour plus d’informations, consultez la section Remarques suivante.

[in, optional] ClientId

Pointeur vers un ID client qui identifie le thread dont le processus doit être ouvert. Ce paramètre doit être un pointeur non NULL vers un ID client valide. Pour plus d’informations, consultez la section Remarques suivante.

Valeur retournée

ZwOpenProcess retourne STATUS_SUCCESS si l’appel réussit. Les valeurs de retour possibles incluent les codes de status d’erreur suivants :

Code de retour Description
STATUS_INVALID_PARAMETER_MIX L’appelant a fourni un nom d’objet ou n’a pas pu fournir un ID client.
STATUS_INVALID_CID L’ID client spécifié n’est pas valide.
STATUS_INVALID_PARAMETER Les droits d’accès demandés ne sont pas valides pour un objet de processus.
STATUS_ACCESS_DENIED Les droits d’accès demandés ne peuvent pas être accordés.

Remarques

Comme c’est le cas pour les handles de noyau ouverts par d’autres appels de service système tels que ZwCreateKey et ZwCreateFile, l’appelant est responsable d’appeler ZwClose pour fermer le handle lorsqu’il n’est plus nécessaire.

Le paramètre ClientId doit pointer vers un ID client qui identifie le thread dont le processus doit être ouvert. En outre, le champ ObjectName de la structure pointée vers par ObjectAttributes doit avoir la valeur NULL.

Si l’appel à cette fonction se produit en mode utilisateur, vous devez utiliser le nom « NtOpenProcess » au lieu de « ZwOpenProcess ».

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
Plateforme cible Universal
En-tête ntddk.h (inclure Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Règles de conformité DDI HwStorPortProhibitedDDIs, PowerIrpDDis

Voir aussi

ACCESS_MASK

OBJECT_ATTRIBUTES

Utilisation des versions Nt et Zw des routines natives des services système natifs