Partilhar via


Função EtwWriteEx (wdm.h)

A função EtwWriteEx é uma função de rastreamento para eventos de publicação que dão suporte à filtragem no código do driver no modo kernel.

Sintaxe

NTSTATUS EtwWriteEx(
  [in]           REGHANDLE              RegHandle,
  [in]           PCEVENT_DESCRIPTOR     EventDescriptor,
  [in]           ULONG64                Filter,
  [in]           ULONG                  Flags,
  [in, optional] LPCGUID                ActivityId,
  [in, optional] LPCGUID                RelatedActivityId,
  [in]           ULONG                  UserDataCount,
  [in, optional] PEVENT_DATA_DESCRIPTOR UserData
);

Parâmetros

[in] RegHandle

Um ponteiro para o identificador de registro do provedor de eventos, que é retornado pela função EtwRegister se o registro do provedor de eventos for bem-sucedido.

[in] EventDescriptor

Um ponteiro para a estrutura EVENT_DESCRIPTOR.

[in] Filter

Os identificadores de instância que identificam a sessão na qual o evento não será gravado. Ou seja, o valor é uma máscara de sessões que deve ser excluída do registro em log (filtrada). Use um OR bit a bit para especificar vários identificadores. Defina como zero se você não der suporte a filtros ou se o evento estiver sendo gravado em todas as sessões (nenhum filtro falhou). Para obter informações sobre como obter o identificador de uma sessão, consulte o parâmetro FilterData de seu etwEnableCallback retorno de chamada.

[in] Flags

Reservado. Deve ser zero (0).

[in, optional] ActivityId

O identificador que indica a atividade associada ao evento. O ActivityID fornece uma maneira de agrupar eventos relacionados e é usado no rastreamento de ponta a ponta. Se NULL, o ETW obterá o identificador do armazenamento local do thread. Para obter detalhes sobre como obter esse identificador, consulte etwActivityIdControl.

[in, optional] RelatedActivityId

Identificador de atividade do componente anterior. Use esse parâmetro para vincular os eventos do componente aos eventos do componente anterior. Para obter o identificador de atividade que foi definido para o componente anterior, consulte as descrições do parâmetro ControlCode da função EtwActivityIdControl.

[in] UserDataCount

Número de estruturas de EVENT_DATA_DESCRIPTOR em UserData. O número máximo é 128.

[in, optional] UserData

Um ponteiro para a matriz de estruturas de EVENT_DATA_DESCRIPTOR. Defina esse parâmetro como NULL se UserDataCount for zero. Os dados devem estar na ordem especificada no manifesto.

Valor de retorno

Retorna ERROR_SUCCESS se tiver êxito ou um dos seguintes valores no erro.

Observações

A função EtwWriteEx é o equivalente do modo kernel da função EventWriteEx do modo de usuário. Os dados de evento gravados com essa função exigem um manifesto. O manifesto é inserido no provedor, portanto, o provedor deve estar disponível para um consumidor consumir os dados. Para garantir que haja um consumidor para o evento que você está publicando, você pode preceder a chamada para EtwWrite com uma chamada para EtwEventEnabled ou EtwProviderEnabled.

Use os parâmetros ActivityId e RelatedActivityId quando quiser relacionar eventos em diferentes componentes em um cenário de rastreamento de ponta a ponta. Por exemplo, os componentes A, B e C executam trabalho em uma atividade relacionada e desejam vincular seus eventos para que um consumidor possa consumir todos os eventos relacionados a essa atividade.

Você pode chamar EtwWriteEx em qualquer IRQL. No entanto, quando IRQL for maior que APC_LEVEL, todos os dados passados para o EtwWrite, EtwWriteEx, EtwWriteString, etwWriteTransfer não devem ser pagináveis. Ou seja, qualquer rotina de modo kernel que esteja em execução no IRQL maior que APC_LEVEL não pode acessar a memória paginável. Os dados passados para as funções EtwWrite, EtwWriteEx, EtwWriteStringe EtwWriteTransfer devem residir na memória do espaço do sistema, independentemente do que seja o IRQL.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 7
servidor com suporte mínimo Windows Server 2008 R2
da Plataforma de Destino Universal
cabeçalho wdm.h
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe

Consulte também

EtwWrite

EventWrite

EventWriteEx