Condividi tramite


EVENT_FILTER_DESCRIPTOR struttura (evntprov.h)

La struttura EVENT_FILTER_DESCRIPTOR definisce i dati del filtro passati a una sessione alla funzione di callback del provider.

Sintassi

typedef struct _EVENT_FILTER_DESCRIPTOR {
  ULONGLONG Ptr;
  ULONG     Size;
  ULONG     Type;
} EVENT_FILTER_DESCRIPTOR, *PEVENT_FILTER_DESCRIPTOR;

Members

Ptr

Puntatore ai dati del filtro per il tipo di filtro specificato nel membro Type .

Se il membro Type è impostato su EVENT_FILTER_TYPE_PID, il membro Ptr punta a una matrice di ID processo (PID).

Se il membro Type è impostato su EVENT_FILTER_TYPE_EVENT_ID, il membro Ptr punta a una struttura EVENT_FILTER_EVENT_ID contenente una matrice di ID evento e un valore booleano che determina se la traccia è abilitata o disabilitata per gli ID evento specificati.

Se il membro Type è impostato su EVENT_FILTER_TYPE_STACKWALK, il membro Ptr punta a una struttura EVENT_FILTER_EVENT_ID che contiene una matrice di ID evento e un valore booleano che determina se la traccia dello stack è abilitata o disabilitata per gli ID evento specificati.

Se il membro Type è impostato su EVENT_FILTER_TYPE_SCHEMATIZED, vedere la struttura EVENT_FILTER_HEADER per informazioni dettagliate sulla costruzione del filtro.

Size

Dimensioni dei dati, in byte.

Il limite massimo delle dimensioni dei dati varia in base al membro Type specificato (tipo del filtro). Le dimensioni massime dei dati, in byte, per molti dei tipi di filtro sono limitate a MAX_EVENT_FILTER_DATA_SIZE, definite nel file di intestazione evntprov.h a 1024.

Type

Valore definito dal provider che identifica il filtro. Per i filtri definiti in un manifesto di strumentazione, impostare questo membro su EVENT_FILTER_TYPE_SCHEMATIZED.

I valori possibili per questo membro sono definiti nel file di intestazione evntprov.h .

  • EVENT_FILTER_TYPE_NONE (0x00000000 )

    Nessun filtro.

  • EVENT_FILTER_TYPE_SCHEMATIZED (0x80000000 )

    Filtro schematizzato.

    Si tratta della configurazione tradizionale del filtro denominato anche filtro lato provider. Il controller definisce un set personalizzato di filtri come oggetto binario passato al provider nella chiamata EnableTrace, EnableTraceEx o EnableTraceEx2. È incumbent nel controller e nel provider per definire e interpretare questi filtri e il controller deve registrare solo gli eventi applicabili. Ciò richiede un accoppiamento chiuso del controller e del provider poiché il tipo e il formato dell'oggetto binario di ciò che può essere filtrato non è definito. La funzione TdhEnumerateProviderFilters può essere usata per recuperare i filtri definiti in un manifesto.

    Per altre informazioni sui filtri a schema, vedere Definizione dei filtri.

  • EVENT_FILTER_TYPE_SYSTEM_FLAGS (0x80000001 )

    Riservato per utilizzo interno.

  • EVENT_FILTER_TYPE_TRACEHANDLE (0x80000002 )

    Usato per acquisire un rundown di una determinata sessione di traccia. Il parametro ControlCode passato alla funzione EnableTraceEx deve essere impostato su EVENT_CONTROL_CODE_CAPTURE_STATE e il parametro ProviderId deve essere SystemTraceControlGuid. La struttura EVENT_FILTER_DESCRIPTOR deve puntare a un singolo TRACEHANDLE che rappresenta una sessione ETW corrente. Verrà eseguito un rundown per tale sessione specifica.

  • EVENT_FILTER_TYPE_PID (0x80000004 )

    ID del processo. Si tratta di uno dei filtri di ambito.

    Il filtro degli eventi ETW in base agli ID processo comporta un flusso di eventi (file o in tempo reale) che contiene gli eventi dei provider nei processi specificati. Abiliterà solo il provider nei processi i cui ID sono forniti. L'elenco dei PID è il PID dei processi in esecuzione al momento in cui EnableTraceEx2 viene chiamato e abiliterà il provider in tutti i processi (per i quali vengono forniti i PID) in quel momento specifico. L'elenco dei PID non verrà archiviato nella sessione. Quindi, quando un processo viene terminato e quindi viene visualizzato nuovamente, il provider in esso non verrà abilitato automaticamente alla sessione di traccia. Il BLOB di filtro basato sui PID è valido solo per una sessione del logger in modalità kernel perché la sessione del logger privato viene eseguita all'interno di un processo in modalità utente.

    Il numero massimo di ID di processo che possono essere filtrati è limitato da MAX_EVENT_FILTER_PID_COUNT definito nel file di intestazione evntprov.h a 8.

    Nel caso in cui venga fornito un filtro ID processo, il provider verrà abilitato solo nei processi in modalità utente. Nel caso in cui lo stesso provider sia registrato da un driver in modalità kernel, non verrà abilitato.

    Questo viene usato con EVENT_TRACE_PROPERTIES_V2 per i logger privati a livello di sistema.

  • EVENT_FILTER_TYPE_EXECUTABLE_NAME (0x80000008 )

    Nome del file eseguibile. Si tratta di uno dei filtri di ambito.

    Questo viene usato con EVENT_TRACE_PROPERTIES_V2 per i logger privati a livello di sistema.

  • EVENT_FILTER_TYPE_PACKAGE_ID (0x80000010 )

    L'ID del pacchetto. Si tratta di uno dei filtri di ambito

    Questo può essere usato per filtrare i provider per gli eventi generati da un determinato pacchetto di app di Windows Store.

  • EVENT_FILTER_TYPE_PACKAGE_APP_ID (0x80000020 )

    ID app relativo al pacchetto (PRAID). Si tratta di uno dei filtri di ambito

    Questo può essere usato per filtrare i provider per gli eventi generati da un determinato pacchetto di app di Windows Store.

  • EVENT_FILTER_TYPE_PAYLOAD (0x80000100 )

    Payload dell'evento (contenuto dell'evento).

    Le dimensioni massime dei dati, in byte, per un filtro payload di eventi sono limitate a MAX_EVENT_FILTER_PAYLOAD_SIZE definite nel file di intestazione evntprov.h a 4096.

  • EVENT_FILTER_TYPE_EVENT_ID (0x80000200 )

    L'ID evento.

    Questa funzionalità consente di abilitare o disabilitare il filtro per un elenco di eventi. Il filtro fornito include una struttura EVENT_FILTER_EVENT_ID che contiene una matrice di ID evento e un valore booleano che indica se abilitare o disabilitare il filtro per gli eventi specificati. Ogni chiamata di scrittura evento passerà rapidamente attraverso questa matrice per scoprire se abilitare o disabilitare la registrazione dell'evento.

    Quando applicato a un provider TraceLogging, questo filtro verrà ignorato perché gli eventi TraceLogging non dispongono di ID evento statici.

    Il numero massimo di ID evento consentiti nella struttura EVENT_FILTER_EVENT_ID è limitato da MAX_EVENT_FILTER_EVENT_ID_COUNT definito nel file di intestazione evntprov.h a 64.

  • EVENT_FILTER_TYPE_EVENT_NAME (0x80000400 )

    Nome evento TraceLogging.

    Questa funzionalità consente di abilitare o disabilitare gli eventi TraceLogging in base ai nomi. Il filtro fornito include una struttura EVENT_FILTER_EVENT_NAME che contiene una matrice di nomi di eventi, maschera di parole chiave e livello per filtrare e un valore booleano che indica se abilitare o disabilitare gli eventi descritti. Quando applicato a un provider non TraceLogging, questo filtro viene ignorato perché tali eventi non hanno nomi specificati nel payload.

    Nota: Disponibile in Windows 10 versione 1709 e versioni successive.

  • EVENT_FILTER_TYPE_STACKWALK (0x80001000 )

    Una passeggiata dello stack.

    Quando la procedura a piedi dello stack è abilitata per un provider, lo stack viene acquisito per tutti gli eventi generati dal provider. La maggior parte del tempo, l'utente è interessato solo allo stack da un determinato numero di eventi.

    Questa funzionalità consente l'abilitazione o la disabilitazione dello stack a piedi su un elenco di eventi. Il filtro fornito include una struttura EVENT_FILTER_EVENT_ID che contiene una matrice di ID evento e un valore booleano che indica se abilitare o disabilitare l'acquisizione dello stack per gli eventi specificati. Ogni chiamata di scrittura evento passerà rapidamente attraverso questa matrice per scoprire se lo stack deve essere acquisito o meno.

    Quando applicato a un provider TraceLogging, questo filtro verrà ignorato come eventi TraceLogging non dispongono di ID evento statici.

    Se si sceglie di usare questo filtro, è comunque necessario specificare EVENT_ENABLE_PROPERTY_STACK_TRACE nella struttura di ENABLE_TRACE_PARAMETERS quando si abilita il provider per gli stack da raccogliere da un provider.

    Il numero massimo di ID evento consentiti nella struttura EVENT_FILTER_EVENT_ID è limitato da MAX_EVENT_FILTER_EVENT_ID_COUNT definito nel file di intestazione evntprov.h a 64.

    Nota: Disponibile in Windows 10 versione 1709 e versioni successive.

  • EVENT_FILTER_TYPE_STACKWALK_NAME (0x80002000 )

    Nome evento TraceLogging.

    Questa funzionalità consente di filtrare la raccolta di stack per gli eventi TraceLogging in base ai nomi degli eventi. Il filtro fornito include una struttura EVENT_FILTER_EVENT_NAME che contiene una matrice di nomi di eventi, maschera di parole chiave e livello per filtrare e un valore booleano che indica se raccogliere stack o meno per gli eventi descritti.

    Quando applicato a un provider non TraceLogging, questo filtro viene ignorato perché tali eventi non hanno nomi specificati nel payload.

    Se si sceglie di usare questo filtro, è comunque necessario specificare EVENT_ENABLE_PROPERTY_STACK_TRACE nella struttura ENABLE_TRACE_PARAMETERS quando si abilita il provider per gli stack da raccogliere da un provider.

    Nota: Disponibile in Windows 10 versione 1709 e versioni successive.

  • EVENT_FILTER_TYPE_STACKWALK_LEVEL_KW (0x80004000 )

    Livello di evento e parola chiave.

    Questa funzionalità consente di filtrare la raccolta di stack per gli eventi in base al livello e alla parola chiave. Il filtro fornito include una struttura EVENT_FILTER_LEVEL_KW che contiene i mascheramenti delle parole chiave e il livello da filtrare, nonché un valore booleano che indica se raccogliere stack o meno per gli eventi descritti.

    Se si sceglie di usare questo filtro, è comunque necessario specificare EVENT_ENABLE_PROPERTY_STACK_TRACE nella struttura ENABLE_TRACE_PARAMETERS quando si abilita il provider per gli stack da raccogliere da un provider.

    Nota: Disponibile in Windows 10 versione 1709 e versioni successive.

Commenti

Il provider determina il layout dei dati e il relativo scopo.

In Windows 8.1, Windows Server 2012 R2 e versioni successive, i filtri di payload degli eventi, ambito e procedura dettagliata dello stack possono essere usati dalla funzione EnableTraceEx2 e dalle strutture ENABLE_TRACE_PARAMETERS e EVENT_FILTER_DESCRIPTOR per filtrare in base a condizioni specifiche in una sessione di logger. Per altre informazioni sui filtri del payload degli eventi, vedere le funzioni EnableTraceEx2, TdhCreatePayloadFilter e TdhAggregatePayloadFilters e le strutture ENABLE_TRACE_PARAMETERS e PAYLOAD_FILTER_PREDICATE .

Requisiti

   
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Intestazione evntprov.h

Vedi anche

Definizione dei filtri

ENABLE_TRACE_PARAMETERS

EVENT_FILTER_EVENT_ID

EnableCallback

EnableTrace

EnableTraceEx

EnableTraceEx2

PAYLOAD_FILTER_PREDICATE

TdhAggregatePayloadFilters

TdhCreatePayloadFilter