Freigeben über


PsSetCreateProcessNotifyRoutineEx2-Funktion (ntddk.h)

Die PsSetCreateProcessNotifyRoutineEx2 Routine registriert oder entfernt eine Rückrufroutine, die den Aufrufer benachrichtigt, wenn ein Prozess erstellt oder gelöscht wird.

Syntax

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

Parameter

[in] NotifyType

Ein PSCREATEPROCESSNOTIFYTYPE-typwert, der den Typ der Prozessbenachrichtigung angibt.

[in] NotifyInformation

Die Adresse der Benachrichtigungsinformationen für den angegebenen Prozessbenachrichtigungstyp. Wenn NotifyTypePsCreateProcessNotifySubsystemsist, ist NotifyInformation ein PCREATE_PROCESS_NOTIFY_ROUTINE_EX, der den Einstiegspunkt des vom Aufrufer bereitgestellten Rückrufs zur Prozesserstellung angibt.

[in] Remove

Ein boolescher Wert, der angibt, ob PsSetCreateProcessNotifyRoutineEx2- eine angegebene Routine aus der Liste der Rückrufroutinen hinzu- oder entfernt. Wenn dieser Parameter TRUEist, wird die angegebene Routine aus der Liste der Rückrufroutinen entfernt. Wenn dieser Parameter FALSEist, wird die angegebene Routine der Liste der Rückrufroutinen hinzugefügt. Wenn RemoveTRUEist, wartet das System auch, bis alle In-Flight-Rückrufroutinen abgeschlossen sind, bevor sie zurückgegeben werden.

Rückgabewert

PsSetCreateProcessNotifyRoutineEx2 gibt einen der folgenden NTSTATUS-Werte zurück:

Rückgabecode Beschreibung
STATUS_SUCCESS
Die angegebene Routine wird jetzt beim Betriebssystem registriert. Das Betriebssystem ruft diese Routine immer dann auf, wenn ein neuer Prozess erstellt wird.
STATUS_INVALID_PARAMETER
Die angegebene Routine wurde bereits registriert, oder das Betriebssystem hat seinen Grenzwert für die Registrierung von Rückrufroutinen zur Prozesserstellung erreicht.

NotifyType ist nicht PsCreateProcessNotifySubsystems.

STATUS_ACCESS_DENIED
Das Bild, das den Rückrufroutinezeiger enthält, hat nicht IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY in der Bildkopfzeile festgelegt.

Bemerkungen

Treiber können PsSetCreateProcessNotifyRoutineEx2- aufrufen, um ihre Prozesserstellungsbenachrichtigungsroutinen zu registrieren.

Nachdem eine vom Treiber bereitgestellte Routine registriert wurde, wird sie mit der eindeutigen ID (angegeben durch ProcessId) des erstellten oder gelöschten Prozesses aufgerufen. Die ParentId- identifiziert den übergeordneten Prozess des neuen Prozesses (dies ist das übergeordnete Element, das für Priorität, Affinität, Kontingent, Token und Handle-Vererbung verwendet wird), wenn er mit der Option "Erbhandles" erstellt wurde. Wenn sie ohne die Vererbungshandle-Optionen erstellt wurde, ist die übergeordnete Prozess-ID NULL.

Wenn der wert Create true ist, wurde der Subsystemprozess erstellt; FALSE gibt an, dass der Prozess gelöscht wurde.

Wenn der Prozess erstellt wird, wird die Rückruffunktion direkt nach dem Erstellen des ersten Threads im Prozess aufgerufen. Umgekehrt wird die Funktion zum Löschen aufgerufen, nachdem der letzte Thread im Prozess beendet wurde und der Adressraum gelöscht werden soll. Es ist möglich, dass der Rückruf nur zum Löschen aufgerufen wird, ohne einen Erstellungsaufruf zu erhalten, in Fällen, in denen der Prozess erstellt und gelöscht wurde, ohne dass ein Thread erstellt wurde.

Ein Treiber muss alle Rückruffunktionen entfernen, die er registriert, bevor er entladen wird. Sie können den Rückruf entfernen, indem Sie PsSetCreateProcessNotifyRoutineEx2- mit Remove = TRUEaufrufen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 10, Version 1703
mindestens unterstützte Server- Windows Server 2016
Zielplattform- Universal
Header- ntddk.h (include Ntddk.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- PASSIVE_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs, PowerIrpDDis

Siehe auch

PCREATE_PROCESS_NOTIFY_ROUTINE_EX

PsSetCreateProcessNotifyRoutine

PsSetCreateProcessNotifyRoutineEx