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 |
---|---|
|
Die angegebene Routine wird jetzt beim Betriebssystem registriert. Das Betriebssystem ruft diese Routine immer dann auf, wenn ein neuer Prozess erstellt wird. |
|
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. |
|
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