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 |
---|---|
|
A rotina especificada agora está registrada no sistema operacional. O sistema operacional chama essa rotina sempre que um novo processo é criado. |
|
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. |
|
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