Función PsSetCreateProcessNotifyRoutineEx2 (ntddk.h)

La rutina PsSetCreateProcessNotifyRoutineEx2 registra o quita una rutina de devolución de llamada que notifica al autor de la llamada cuando se crea o elimina un proceso.

Sintaxis

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

Parámetros

[in] NotifyType

Valor de tipo PSCREATEPROCESSNOTIFYTYPE que indica el tipo de notificación de proceso.

[in] NotifyInformation

Dirección de la información de notificación para el tipo especificado de notificación de proceso. Si NotifyType es PsCreateProcessNotifySubsystems, NotifyInformation es un PCREATE_PROCESS_NOTIFY_ROUTINE_EX que especifica el punto de entrada de la devolución de llamada proporcionada por el autor de la llamada.

[in] Remove

Valor booleano que especifica si PsSetCreateProcessNotifyRoutineEx2 agregará o quitará una rutina especificada de la lista de rutinas de devolución de llamada. Si este parámetro es TRUE, la rutina especificada se quita de la lista de rutinas de devolución de llamada. Si este parámetro es FALSE, la rutina especificada se agrega a la lista de rutinas de devolución de llamada. Si Remove es TRUE, el sistema también espera a que se completen todas las rutinas de devolución de llamada en curso antes de volver.

Valor devuelto

PsSetCreateProcessNotifyRoutineEx2 devuelve uno de los siguientes valores NTSTATUS:

Código devuelto Descripción
STATUS_SUCCESS
La rutina especificada ahora está registrada con el sistema operativo. El sistema operativo llama a esta rutina cada vez que se crea un nuevo proceso.
STATUS_INVALID_PARAMETER
La rutina especificada ya estaba registrada o el sistema operativo ha alcanzado su límite para registrar rutinas de devolución de llamada de creación de procesos.

NotifyType no es PsCreateProcessNotifySubsystems.

STATUS_ACCESS_DENIED
La imagen que contiene el puntero rutina de devolución de llamada no tenía IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY establecido en su encabezado de imagen.

Comentarios

Los controladores pueden llamar a PsSetCreateProcessNotifyRoutineEx2 para registrar sus rutinas de notificación de creación de procesos.

Una vez registrada una rutina proporcionada por el controlador, se llama a con el identificador único (indicado por ProcessId) del proceso creado o eliminado. ParentId identifica el proceso primario del nuevo proceso (este es el elemento primario que se usa para prioridad, afinidad, cuota, token y administración de herencia, entre otros) si se creó con la opción heredar identificadores. Si se creó sin las opciones de identificador de herencia, el identificador de proceso primario es NULL.

Si el valor Create es TRUE, se creó el proceso del subsistema; FALSE indica que se eliminó el proceso.

Cuando se crea el proceso, se invoca la función de devolución de llamada justo después de crear el primer subproceso del proceso. Por el contrario, para su eliminación, la función se invoca después de que finalice el último subproceso del proceso y el espacio de direcciones esté a punto de eliminarse. Es posible que la devolución de llamada solo se invoque para su eliminación sin obtener una llamada de creación en los casos en los que se creó y eliminó el proceso sin que se cree un subproceso.

Un controlador debe quitar cualquier función de devolución de llamada que registre antes de descargarla. Puede quitar la devolución de llamada llamando a PsSetCreateProcessNotifyRoutineEx2 con Remove = TRUE.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10, versión 1703
Servidor mínimo compatible Windows Server 2016
Plataforma de destino Universal
Encabezado ntddk.h (incluya Ntddk.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Reglas de cumplimiento de DDI HwStorPortProhibitedDIs, PowerIrpDDis

Consulte también

PCREATE_PROCESS_NOTIFY_ROUTINE_EX

PsSetCreateProcessNotifyRoutine

PsSetCreateProcessNotifyRoutineEx