Compartilhar via


Função EtwRegister (wdm.h)

A função EtwRegister registra o provedor de eventos e deve ser chamada antes que um provedor possa iniciar o rastreamento. A função EtwRegister é a contraparte do modo kernel para a função EventRegister do modo de usuário. A função também pode fornecer um ponteiro para uma função de retorno de chamada opcional que pode ser usada para fornecer recursos adicionais de filtragem de eventos.

Sintaxe

NTSTATUS EtwRegister(
  [in]           LPCGUID            ProviderId,
  [in, optional] PETWENABLECALLBACK EnableCallback,
  [in, optional] PVOID              CallbackContext,
  [out]          PREGHANDLE         RegHandle
);

Parâmetros

[in] ProviderId

Um ponteiro para o GUID do provedor de eventos.

[in, optional] EnableCallback

Um ponteiro para uma função de retorno de chamada opcional. A função de retorno de chamada fornece recursos adicionais de filtragem de eventos. A função de retorno de chamada é definida pelo usuário.

[in, optional] CallbackContext

A função retorna o contexto de retorno de chamada opcional quando um retorno de chamada é feito. Você pode especificar o contexto opcional ao registrar um provedor. O parâmetro CallbackContext dá suporte aos cenários em que um retorno de chamada é compartilhado por vários provedores, como em uma classe C++. O CallbackContext fornece uma maneira de distinguir as instâncias do provedor de destino para habilitar o retorno de chamada.

[out] RegHandle

Um ponteiro para uma variável que receberá o identificador de registro do provedor se a chamada de função for bem-sucedida.

Retornar valor

A função EtwRegister retorna um código status da seguinte lista:

Código de retorno Descrição
STATUS_SUCCESS
Indica que o provedor de eventos foi registrado com êxito no ETW.
STATUS_INVALID_PARAMETER
Indica que o parâmetro não era válido.
STATUS_Xxx
Indica que a solicitação falhou pelo motivo especificado pelo valor NTSTATUS. Consulte Ntstatus.h para obter informações detalhadas sobre o código de retorno de status real.

Comentários

Antes que um driver de modo kernel possa rastrear eventos, o driver deve se registrar como um provedor de eventos usando a função EtwRegister . Quando um driver de modo kernel chama EtwRegister, a função retorna um identificador de registro. Esse identificador de registro pode ser usado para testar se um palavra-chave ou nível está habilitado para um provedor específico e para chamar funções de rastreamento e registro em log de eventos. Após a conclusão do rastreamento, um driver deve chamar a função EtwUnregister para cancelar o registro do provedor. Para cada chamada para EtwRegister , deve haver uma chamada correspondente para EtwUnregister. A falha ao cancelar o registro do provedor de eventos pode causar erros quando o processo é descarregado porque as funções de retorno de chamada associadas ao processo não são mais válidas. Nenhuma chamada de rastreamento deve ser feita que esteja fora do código limitado pelas funções EtwRegister e EtwUnregister . Para obter o melhor desempenho, você pode chamar a função EtwRegister em sua rotina DriverEntry e a função EtwUnregister em sua rotina DriverUnload .

Os chamadores de EtwRegister devem estar em execução em IRQL = PASSIVE_LEVEL no contexto de um thread do sistema.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows Vista e versões posteriores do Windows.
Plataforma de Destino Universal
Cabeçalho wdm.h (include Wdm.h, Ntddk.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Regras de conformidade da DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Confira também

EtwUnregister