Funzione PsSetCreateProcessNotifyRoutineEx2 (ntddk.h)

La routine PsSetCreateProcessNotifyRoutineEx2 registra o rimuove una routine di callback che notifica al chiamante quando viene creato o eliminato un processo.

Sintassi

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

Parametri

[in] NotifyType

Valore di tipo PSCREATEPROCESSNOTIFYTYPE che indica il tipo di notifica del processo.

[in] NotifyInformation

Indirizzo delle informazioni di notifica per il tipo specificato di notifica del processo. Se NotifyType è PsCreateProcessNotifySubsystems, NotifyInformation è un PCREATE_PROCESS_NOTIFY_ROUTINE_EX che specifica il punto di ingresso del caller fornito dal callback.

[in] Remove

Valore booleano che specifica se PsSetCreateProcessNotifyRoutineEx2 aggiungerà o rimuoverà una routine specificata dall'elenco delle routine di callback. Se questo parametro è TRUE, la routine specificata viene rimossa dall'elenco delle routine di callback. Se questo parametro è FALSE, la routine specificata viene aggiunta all'elenco delle routine di callback. Se Remove è TRUE, il sistema attende anche il completamento di tutte le routine di callback in anteprima prima della restituzione.

Valore restituito

PsSetCreateProcessNotifyRoutineEx2 restituisce uno dei valori NTSTATUS seguenti:

Codice restituito Descrizione
STATUS_SUCCESS
La routine specificata è ora registrata con il sistema operativo. Il sistema operativo chiama questa routine ogni volta che viene creato un nuovo processo.
STATUS_INVALID_PARAMETER
La routine specificata è già stata registrata o il sistema operativo ha raggiunto il limite per la registrazione delle routine di callback di creazione del processo.

NotifyType non è PsCreateProcessNotifySubsystems.

STATUS_ACCESS_DENIED
L'immagine contenente il puntatore della routine di callback non ha IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY impostata nell'intestazione dell'immagine.

Commenti

I driver possono chiamare PsSetCreateProcessNotifyRoutineEx2 per registrare le routine di notifica per la creazione di processi.

Dopo la registrazione di una routine fornita dal driver, viene chiamata con l'ID univoco (indicato da ProcessId) del processo creato o eliminato. ParentId identifica il processo padre del nuovo processo (questo è l'elemento padre usato per priorità, affinità, quota, token e gestione dell'ereditarietà, tra gli altri) se è stato creato con l'opzione di handle eredita. Se è stata creata senza le opzioni di handle eredita, l'ID processo padre è NULL.

Se il valore Create è TRUE, il processo del sottosistema è stato creato; FALSE indica che il processo è stato eliminato.

Quando viene creato il processo, la funzione di callback viene richiamata subito dopo la creazione del primo thread nel processo. Al contrario, per l'eliminazione, la funzione viene richiamata dopo l'ultimo thread del processo terminato e lo spazio degli indirizzi sta per essere eliminato. È possibile che il callback venga richiamato solo per l'eliminazione senza ottenere una chiamata di creazione nei casi in cui il processo è stato creato ed eliminato senza che venga mai creato un thread.

Un driver deve rimuovere qualsiasi funzione di callback registrata prima di scaricarla. È possibile rimuovere il callback chiamando PsSetCreateProcessNotifyRoutineEx2 con Remove = TRUE.

Requisiti

Requisito Valore
Client minimo supportato Windows 10 versione 1703
Server minimo supportato Windows Server 2016
Piattaforma di destinazione Universale
Intestazione ntddk.h (include Ntddk.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Regole di conformità DDI HwStorPortProhibitedDDIs, PowerIrpDDis

Vedi anche

PCREATE_PROCESS_NOTIFY_ROUTINE_EX

PsSetCreateProcessNotifyRoutine

PsSetCreateProcessNotifyRoutineEx