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 |
---|---|
|
La routine specificata è ora registrata con il sistema operativo. Il sistema operativo chiama questa routine ogni volta che viene creato un nuovo processo. |
|
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. |
|
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