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-type-Wert, der den Typ der Prozessbenachrichtigung angibt.

[in] NotifyInformation

Die Adresse der Benachrichtigungsinformationen für den angegebenen Prozessbenachrichtigungstyp. Wenn NotifyTypeauf PsCreateProcessNotifySubsystems festgelegt ist, ist NotifyInformation eine PCREATE_PROCESS_NOTIFY_ROUTINE_EX , die 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 hinzufügen oder daraus entfernt. Wenn dieser Parameter TRUE ist, wird die angegebene Routine aus der Liste der Rückrufroutinen entfernt. Wenn dieser Parameter FALSE ist, wird die angegebene Routine der Liste der Rückrufroutinen hinzugefügt. Wenn Removeauf TRUE festgelegt ist, wartet das System auch darauf, dass alle In-Flight-Rückrufroutinen abgeschlossen sind, bevor es zurückgegeben wird.

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 auf, wenn ein neuer Prozess erstellt wird.
STATUS_INVALID_PARAMETER
Die angegebene Routine wurde bereits registriert, oder das Betriebssystem hat seine Grenze für die Registrierung von Rückrufroutinen zur Prozesserstellung erreicht.

NotifyType ist nicht PsCreateProcessNotifySubsystems.

STATUS_ACCESS_DENIED
Für das Bild, das den Rückrufroutinenzeiger enthält, wurde im Imageheader keine IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY festgelegt.

Hinweise

Treiber können PsSetCreateProcessNotifyRoutineEx2 aufrufen, um ihre Benachrichtigungsroutinen zur Prozesserstellung 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 unter anderem für Priorität, Affinität, Kontingent, Token und Handle-Vererbung verwendet wird), wenn er mit der Option "Handles erben" erstellt wurde. Wenn sie ohne die Handle-Optionen zum Erben erstellt wurde, ist die ID des übergeordneten Prozesses NULL.

Wenn der Create-Wert TRUE ist, wurde der Subsystemprozess erstellt. FALSE gibt an, dass der Prozess gelöscht wurde.

Wenn der Prozess erstellt wird, wird die Rückruffunktion aufgerufen, unmittelbar nachdem der erste Thread im Prozess erstellt wurde. Umgekehrt wird die Funktion zum Löschen aufgerufen, nachdem der letzte Thread im Prozess beendet wurde, und der Adressraum wird bald gelöscht. Es ist möglich, dass der Rückruf nur zum Löschen aufgerufen wird, ohne einen Erstellungsaufruf zu erhalten, wenn der Prozess erstellt und gelöscht wurde, ohne dass jemals 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 = TRUE aufrufen.

Anforderungen

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

Weitere Informationen

PCREATE_PROCESS_NOTIFY_ROUTINE_EX

PsSetCreateProcessNotifyRoutine

PsSetCreateProcessNotifyRoutineEx