Delen via


Gebeurtenissen gebruiken (gebeurtenistracering)

Consumenten van gebeurtenistracering kunnen gebeurtenissen van een of meer providers verwerken. Consumenten kunnen gebeurtenissen uit een logboekbestand of in realtime verwerken. U kunt gebeurtenissen alleen in realtime gebruiken als de controller de realtime logboekregistratiemodus voor de sessie specificeert. Om prestatieredenen wordt realtimeverwerking niet aanbevolen vóór Windows Vista.

Als u de traceringssessie wilt opgeven waaruit u gebeurtenissen wilt verwerken, gebruikt u de EVENT_TRACE_LOGFILE structuur. U moet een kopie van deze structuur initialiseren voor elke logboekbestand of realtimesessie die u wilt verwerken.

Als u gebeurtenissen uit een logboekbestand wilt gebruiken, stelt u het LogFileName- lid in op de naam van het logboekbestand. Als u gebeurtenissen van een realtime-sessie wilt gebruiken, stelt u de eigenschap LoggerName in op de sessienaam. U gebruikt deze structuur ook om de BufferCallback callback, de EventCallback callback, of de EventRecordCallback callback op te geven, die worden gebruikt om de gebeurtenissen te verwerken.

  • EventRecordCallback-: ontvangt en verwerkt alle gebeurtenissen (inclusief de headergebeurtenis) uit een of meer logboekbestanden en een realtime sessie. U implementeert deze callback als u de helperfuncties voor traceringsgegevens gebruikt om de gebeurtenisgegevens te parseren of als u metagegevens over de gebeurtenis wilt ophalen.
  • EventCallback-: ontvangt en verwerkt alle gebeurtenissen (inclusief de headergebeurtenis) uit een of meer logboekbestanden en een realtime sessie.
  • BufferCallback-: ontvangt en verwerkt samenvattingsinformatie over de huidige buffer, zoals gebeurtenissen die verloren zijn gegaan. ETW roept de callback aan nadat alle gebeurtenissen in de buffer aan de ontvanger zijn geleverd. De gebruiker kan deze callback ook gebruiken om de verwerking van gebeurtenissen te annuleren; als u echter gebeurtenissen in realtime verwerkt, levert ETW gebeurtenissen totdat de controller de sessie stopt.

Nadat u een of meer traceringssessies hebt gedefinieerd, roept u de OpenTrace--functie aan voor elke traceringssessie die u wilt verwerken; u kunt gebeurtenissen uit een of meer logboekbestanden verwerken, maar van slechts één realtime sessie. Vervolgens geeft u de lijst van traceringssessie-handles door die door OpenTrace- worden geretourneerd naar de functie ProcessTrace-. De functie ProcessTrace combineert de gebeurtenissen, sorteert ze in chronologische volgorde en levert deze vervolgens één voor één aan de callbacks. De gebeurtenissen kunnen worden gefilterd om alleen de gebeurtenissen op te nemen die in een bepaald tijdsbestek vallen met behulp van de parameters StartTime en EndTime. De functie ProcessTrace blokkeert de thread totdat uw consument alle gebeurtenissen in de traceersessies heeft verwerkt, of de BufferCallback retourneert FALSE, of totdat u CloseTraceaanroept.

Vóór Windows Vista: U kunt CloseTrace- alleen aanroepen nadat ProcessTrace terugkeert.

Zie voor een voorbeeld van het consumeren van gebeurtenissen die zijn gepubliceerd met behulp van manifest-, MOF- of TMF-bestanden, Gebeurtenisgegevens ophalen met behulp van TDH. Houd er rekening mee dat u vanaf Windows Vista de TDH (Trace Data Helper) functies moet gebruiken om gebeurtenissen te verwerken.

Zie Gebeurtenisgegevens ophalen met MOF-voor een voorbeeld waarin wordt getoond hoe gebeurtenissen worden gebruikt die zijn gepubliceerd met MOF.