Partager via


PsSetCreateProcessNotifyRoutineEx2, fonction (ntddk.h)

La routine PsSetCreateProcessNotifyRoutineEx2 inscrit ou supprime une routine de rappel qui avertit l’appelant lorsqu’un processus est créé ou supprimé.

Syntaxe

NTSTATUS PsSetCreateProcessNotifyRoutineEx2(
  [in] PSCREATEPROCESSNOTIFYTYPE NotifyType,
  [in] PVOID                     NotifyInformation,
  [in] BOOLEAN                   Remove
);

Paramètres

[in] NotifyType

Valeur de type PSCREATEPROCESSNOTIFYTYPE qui indique le type de notification de processus.

[in] NotifyInformation

Adresse des informations de notification pour le type de notification de processus spécifié. Si NotifyType a la valeur PsCreateProcessNotifySubsystems, NotifyInformation est un PCREATE_PROCESS_NOTIFY_ROUTINE_EX qui spécifie le point d’entrée du rappel de création de processus fourni par l’appelant.

[in] Remove

Valeur booléenne qui spécifie si PsSetCreateProcessNotifyRoutineEx2 ajoute ou supprime une routine spécifiée de la liste des routines de rappel. Si ce paramètre a la valeur TRUE, la routine spécifiée est supprimée de la liste des routines de rappel. Si ce paramètre a la valeur FALSE, la routine spécifiée est ajoutée à la liste des routines de rappel. Si Remove a la valeur TRUE, le système attend également que toutes les routines de rappel en cours d’exécution se terminent avant de revenir.

Valeur retournée

PsSetCreateProcessNotifyRoutineEx2 retourne l’une des valeurs NTSTATUS suivantes :

Code de retour Description
STATUS_SUCCESS
La routine spécifiée est désormais inscrite auprès du système d’exploitation. Le système d’exploitation appelle cette routine chaque fois qu’un nouveau processus est créé.
STATUS_INVALID_PARAMETER
La routine spécifiée a déjà été inscrite ou le système d’exploitation a atteint sa limite d’inscription des routines de rappel de création de processus.

NotifyType n’est pas PsCreateProcessNotifySubsystems.

STATUS_ACCESS_DENIED
L’image qui contient le pointeur de routine de rappel n’avait pas IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY définie dans son en-tête d’image.

Remarques

Les pilotes peuvent appeler PsSetCreateProcessNotifyRoutineEx2 pour inscrire leurs routines de notification de création de processus.

Une fois qu’une routine fournie par le pilote est inscrite, elle est appelée avec l’ID unique (indiqué par ProcessId) du processus créé ou supprimé. ParentId identifie le processus parent du nouveau processus (il s’agit du parent utilisé pour la priorité, l’affinité, le quota, le jeton et l’héritage de handle, entre autres) s’il a été créé avec l’option hériter de handles. S’il a été créé sans les options de handle d’héritage, l’ID de processus parent est NULL.

Si la valeur Create a la valeur TRUE, le processus de sous-système a été créé ; FALSE indique que le processus a été supprimé.

Lorsque le processus est créé, la fonction de rappel est appelée juste après la création du premier thread du processus. À l’inverse, pour la suppression, la fonction est appelée une fois que le dernier thread du processus est terminé et que l’espace d’adressage est sur le point d’être supprimé. Il est possible que le rappel soit uniquement appelé pour la suppression sans obtenir d’appel de création dans les cas où le processus a été créé et supprimé sans qu’un thread soit créé.

Un pilote doit supprimer toute fonction de rappel qu’il inscrit avant son déchargement. Vous pouvez supprimer le rappel en appelant PsSetCreateProcessNotifyRoutineEx2 avec Remove = TRUE.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10 version 1703
Serveur minimal pris en charge Windows Server 2016
Plateforme cible Universal
En-tête ntddk.h (incluez Ntddk.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Règles de conformité DDI HwStorPortProhibitedDDIs, PowerIrpDDis

Voir aussi

PCREATE_PROCESS_NOTIFY_ROUTINE_EX

PsSetCreateProcessNotifyRoutine

PsSetCreateProcessNotifyRoutineEx