Korzystanie ze zdarzeń (śledzenie zdarzeń)
Odbiorcy śledzenia zdarzeń mogą przetwarzać zdarzenia od co najmniej jednego dostawcy. Konsumenci mogą przetwarzać zdarzenia z pliku dziennika lub w czasie rzeczywistym. Można przetwarzać zdarzenia w czasie rzeczywistym tylko wtedy, gdy kontroler określa tryb rejestrowania w czasie rzeczywistym dla sesji. Ze względu na wydajność przetwarzanie w czasie rzeczywistym nie jest zalecane przed systemem Windows Vista.
Aby określić sesję śledzenia, z której chcesz przetwarzać zdarzenia, należy użyć struktury EVENT_TRACE_LOGFILE. Należy zainicjować kopię tej struktury dla każdego pliku dziennika lub sesji czasu rzeczywistego, którą chcesz przetworzyć.
Aby korzystać ze zdarzeń z pliku dziennika, ustaw element członkowski LogFileName na nazwę pliku dziennika. Aby pobierać zdarzenia z sesji czasu rzeczywistego, przypisz członkowi LoggerName nazwę sesji. Ta struktura służy również do określania wywołań zwrotnych BufferCallback oraz EventCallback lub EventRecordCallback, które są używane do przetwarzania zdarzeń.
- EventRecordCallback— odbiera i przetwarza wszystkie zdarzenia (w tym zdarzenie nagłówka) z co najmniej jednego pliku dziennika i sesji w czasie rzeczywistym. Implementujesz tę procedurę zwrotną, jeśli używasz funkcji pomocniczych do danych śledzenia w celu analizy danych zdarzenia lub chcesz pobrać metadane dotyczące zdarzenia.
- EventCallback— odbiera i przetwarza wszystkie zdarzenia (w tym zdarzenie nagłówka) z jednego lub więcej plików dziennika i sesji w czasie rzeczywistym.
- BufferCallback— odbiera i przetwarza podsumowanie informacji o bieżącym buforze, takich jak utracone zdarzenia. ETW wywołuje callback po przekazaniu wszystkich zdarzeń w buforze do odbiorcy. Konsument może również użyć tego wywołania zwrotnego do anulowania przetwarzania zdarzeń; jeśli jednak zdarzenia są przetwarzane w czasie rzeczywistym, funkcja ETW dostarcza zdarzenia aż do momentu zatrzymania sesji przez kontroler.
Po zdefiniowaniu co najmniej jednej sesji śledzenia wywołaj funkcję OpenTrace dla każdej sesji śledzenia, którą chcesz przetworzyć; Zdarzenia można przetwarzać z co najmniej jednego pliku dziennika, ale tylko z jednej sesji w czasie rzeczywistym. Następnie przekażesz listę dojść sesji śledzenia, które funkcja OpenTrace zwraca do funkcji ProcessTrace. Funkcja ProcessTrace łączy zdarzenia, sortuje je w kolejność chronologiczną, a następnie dostarcza je do wywołań zwrotnych pojedynczo. Zdarzenia można filtrować, aby uwzględnić tylko te, które należą do określonego przedziału czasu przy użyciu parametrów StartTime i EndTime. Funkcja ProcessTrace blokuje wątek, dopóki użytkownik nie przetworzy wszystkich zdarzeń w sesjach śledzenia, BufferCallback zwraca FALSElub wywołujesz metodę CloseTrace.
przed systemem Windows Vista: Można wywołać CloseTrace dopiero po powrocie ProcessTrace.
Aby zapoznać się z przykładem ilustrującym, jak korzystać ze zdarzeń publikowanych za pomocą plików manifestu, MOF lub TMF, zobacz Pobieranie danych zdarzeń za pomocą TDH. Należy pamiętać, że począwszy od systemu Windows Vista, należy używać funkcji pomocnika danych śledzenia (TDH) do obsługi zdarzeń.
Aby zapoznać się z przykładem pokazującym, jak konsumować zdarzenia publikowane przy użyciu MOF, zobacz Pobieranie danych zdarzeń przy użyciu MOF.