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
Utilisation des versions Nt et Zw des routines natives des services système natifs