Share via


Função TraceLoggingRegister (traceloggingprovider.h)

Registra um provedor tracelogging para que ele possa ser usado para registrar eventos. O registro é válido até que o provedor não seja registrado ou o processo seja encerrado.

Sintaxe

TLG_STATUS TraceLoggingRegister(
  TraceLoggingHProvider hProvider
);

Parâmetros

hProvider

O identificador do provedor TraceLogging a ser registrado. O identificador ainda não deve estar registrado.

Retornar valor

Se você chamar essa função do código do modo de usuário, a função retornará um HRESULT. Use a SUCCEEDED() macro para determinar se a função é bem-sucedida.

Se você chamar essa função do código do modo kernel, a função retornará um NTSTATUS. Use a NT_SUCCESS() macro para determinar se a função é bem-sucedida.

Observação

O código de erro retornado por TraceLoggingRegister destina-se principalmente ao uso em cenários de depuração e diagnóstico. A maioria dos códigos de produção deve continuar a ser executada mesmo que um provedor ETW não tenha sido registrado, portanto, os builds de versão geralmente devem ignorar o código de erro retornado por TraceLoggingRegister.

Comentários

Quando um componente começa a ser executado, qualquer identificador do provedor TraceLogging no componente estará em um estado não registrado e todas as tentativas de usar o identificador do provedor para gerar eventos serão silenciosamente ignoradas. Antes que o provedor possa gravar eventos, você precisa registrar o provedor usando TraceLoggingRegister. Normalmente, você fará isso durante a inicialização do componente, por exemplo, em main, wmain, WinMain, DllMain(DLL_PROCESS_ATTACH)ou DriverEntry. No desligamento do componente, cancele o registro do provedor chamando TraceLoggingUnregister.

Não chame TraceLoggingRegister em um identificador de provedor que já esteja registrado. Você pode cancelar o registro de um identificador e registrá-lo novamente, se necessário, embora registrar e cancelar o registro repetidamente do identificador possa causar problemas de desempenho e deve ser evitado (ou seja, não registre, escreva alguns eventos e cancele o registro; em vez disso, registre-se uma vez na inicialização do componente e cancele o registro no desligamento do componente).

TraceLoggingRegister não é thread-safe em relação a outras chamadas para TraceLoggingRegister ou TraceLoggingUnregister no mesmo identificador. Não chame TraceLoggingRegister se for possível que outro thread possa chamar TraceLoggingRegister ou TraceLoggingUnregister no mesmo identificador ao mesmo tempo.

Se TraceLoggingRegister falhar, o identificador do provedor permanecerá sem registro e todos os usos do identificador do provedor não serão operações seguras. Em particular, é uma operação não operacional segura para chamar TraceLoggingWrite ou TraceLoggingUnregister com um identificador de provedor não registrado.

Importante

Se a DLL ou o driver chamar TraceLoggingRegister em um identificador de provedor, ele deverá chamar TraceLoggingUnregister nesse identificador de provedor antes que a DLL ou o driver descarregue. Se uma DLL for descarregada sem chamar TraceLoggingUnregister, o processo poderá falhar posteriormente. Se um driver descarregar sem chamar TraceLoggingUnregister, o sistema poderá falhar posteriormente. A função TraceLoggingRegister estabelece um retorno de chamada de configuração etw e TraceLoggingUnregister cancela o retorno de chamada. Se o retorno de chamada não for cancelado e o módulo for descarregado, ocorrerá uma falha na próxima vez que o ETW tentar invocar o retorno de chamada.

Aviso

Se o driver chamar TraceLoggingRegister e encontrar um erro durante DriverEntry, ele deverá chamar TraceLoggingUnregister antes de retornar o erro de DriverEntry. As rotinas normais de limpeza do driver não serão chamadas se o driver retornar um erro de DriverEntry e a falha ao chamar TraceLoggingUnregister causará uma falha no sistema.

TraceLoggingRegister faz o seguinte:

Uma chamada para TraceLoggingRegister é a mesma que uma chamada para TraceLoggingRegisterEx com NULL para os parâmetros de retorno de chamada e contexto. Use TraceLoggingRegisterEx se precisar receber um retorno de chamada de habilitação de ETW quando as sessões habilitarem ou desabilitarem o provedor.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Cabeçalho traceloggingprovider.h
Biblioteca Advapi32.lib

Confira também

EventRegister

TraceLoggingRegisterEx

TraceLoggingUnregister

TraceLoggingWrite

TRACELOGGING_DEFINE_PROVIDER