Função PsSetCreateProcessNotifyRoutineEx2 (ntddk.h)

A rotina PsSetCreateProcessNotifyRoutineEx2 registra ou remove uma rotina de retorno de chamada que notifica o chamador quando um processo é criado ou excluído.

Sintaxe

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

Parâmetros

[in] NotifyType

Um valor do tipo PSCREATEPROCESSNOTIFYTYPE que indica o tipo de notificação de processo.

[in] NotifyInformation

O endereço das informações de notificação para o tipo especificado de notificação de processo. Se NotifyType for PsCreateProcessNotifySubsystems, NotifyInformation será um PCREATE_PROCESS_NOTIFY_ROUTINE_EX que especifica o ponto de entrada do retorno de chamada de criação de processo fornecido pelo chamador.

[in] Remove

Um valor booliano que especifica se PsSetCreateProcessNotifyRoutineEx2 adicionará ou removerá uma rotina especificada da lista de rotinas de retorno de chamada. Se esse parâmetro for TRUE, a rotina especificada será removida da lista de rotinas de retorno de chamada. Se esse parâmetro for FALSE, a rotina especificada será adicionada à lista de rotinas de retorno de chamada. Se Remove for TRUE, o sistema também aguardará a conclusão de todas as rotinas de retorno de chamada em andamento antes de retornar.

Retornar valor

PsSetCreateProcessNotifyRoutineEx2 retorna um dos seguintes valores NTSTATUS:

Código de retorno Descrição
STATUS_SUCCESS
A rotina especificada agora está registrada no sistema operacional. O sistema operacional chama essa rotina sempre que um novo processo é criado.
STATUS_INVALID_PARAMETER
A rotina especificada já estava registrada ou o sistema operacional atingiu seu limite para registrar rotinas de retorno de chamada de criação de processo.

NotifyType não é PsCreateProcessNotifySubsystems.

STATUS_ACCESS_DENIED
A imagem que contém o ponteiro de rotina de retorno de chamada não tinha IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY definido em seu cabeçalho de imagem.

Comentários

Os drivers podem chamar PsSetCreateProcessNotifyRoutineEx2 para registrar suas rotinas de notificação de criação de processo.

Depois que uma rotina fornecida pelo driver é registrada, ela é chamada com a ID exclusiva (indicada por ProcessId) do processo criado ou excluído. O ParentId identifica o processo pai do novo processo (este é o pai usado para prioridade, afinidade, cota, token e herança de identificador, entre outros) se ele foi criado com a opção herdar identificadores. Se ele tiver sido criado sem as opções de identificador herdado, a ID do processo pai será NULL.

Se o valor Create for TRUE, o processo do subsistema foi criado; FALSE indica que o processo foi excluído.

Quando o processo é criado, a função de retorno de chamada é invocada logo após a criação do primeiro thread no processo. Por outro lado, para exclusão, a função é invocada depois que o último thread no processo é encerrado e o espaço de endereço está prestes a ser excluído. É possível que o retorno de chamada seja invocado apenas para exclusão sem obter uma chamada de criação nos casos em que o processo foi criado e excluído sem que um thread seja criado.

Um driver deve remover qualquer função de retorno de chamada que ele registra antes de descarregar. Você pode remover o retorno de chamada chamando PsSetCreateProcessNotifyRoutineEx2 com Remove = TRUE.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10, versão 1703
Servidor mínimo com suporte Windows Server 2016
Plataforma de Destino Universal
Cabeçalho ntddk.h (inclua Ntddk.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Regras de conformidade da DDI HwStorPortProhibitedDDIs, PowerIrpDDis

Confira também

PCREATE_PROCESS_NOTIFY_ROUTINE_EX

PsSetCreateProcessNotifyRoutine

PsSetCreateProcessNotifyRoutineEx