Mengonsumsi Peristiwa (Pelacakan Peristiwa)

Konsumen pelacakan peristiwa dapat memproses peristiwa dari satu atau beberapa penyedia. Konsumen dapat memproses peristiwa dari file log atau secara real time. Anda dapat menggunakan peristiwa secara real time hanya jika pengontrol menentukan mode pengelogan real time untuk sesi tersebut. Untuk alasan performa, pemrosesan real-time tidak disarankan sebelum Windows Vista.

Untuk menentukan sesi pelacakan tempat Anda ingin memproses peristiwa, Anda menggunakan struktur EVENT_TRACE_LOGFILE . Anda harus menginisialisasi salinan struktur ini untuk setiap file log atau sesi real time yang ingin Anda proses.

Untuk menggunakan peristiwa dari file log, atur anggota LogFileName ke nama file log. Untuk menggunakan peristiwa dari sesi real time, atur anggota LoggerName ke nama sesi. Anda juga menggunakan struktur ini untuk menentukan panggilan balik BufferCallback dan panggilan balik EventCallback atau EventRecordCallback yang digunakan untuk memproses peristiwa.

  • EventRecordCallback—Menerima dan memproses semua peristiwa (termasuk peristiwa header) dari satu atau beberapa file log dan sesi real time. Anda menerapkan panggilan balik ini jika Anda menggunakan fungsi pembantu data pelacakan untuk mengurai data peristiwa atau Anda ingin mengambil metadata tentang peristiwa tersebut.
  • EventCallback—Menerima dan memproses semua peristiwa (termasuk peristiwa header) dari satu atau beberapa file log dan sesi real time.
  • BufferCallback—Menerima dan memproses informasi ringkasan tentang buffer saat ini, seperti peristiwa yang hilang. ETW memanggil panggilan balik setelah mengirimkan semua peristiwa di buffer kepada konsumen. Konsumen juga dapat menggunakan panggilan balik ini untuk membatalkan pemrosesan peristiwa; namun, jika Anda mengonsumsi peristiwa secara real time, ETW mengirimkan peristiwa sampai pengontrol menghentikan sesi.

Setelah menentukan satu atau beberapa sesi pelacakan, panggil fungsi OpenTrace untuk setiap sesi pelacakan yang ingin Anda proses; Anda dapat memproses peristiwa dari satu atau beberapa file log, tetapi hanya dari satu sesi real-time. Anda kemudian meneruskan daftar handel sesi pelacakan yang dikembalikan OpenTrace ke fungsi ProcessTrace . Fungsi ProcessTrace menggabungkan peristiwa, mengurutkannya ke dalam urutan kronologis, lalu mengirimkannya ke panggilan balik satu per satu. Peristiwa dapat difilter untuk menyertakan hanya yang termasuk dalam jangka waktu tertentu menggunakan parameter StartTime dan EndTime . Fungsi ProcessTrace memblokir utas hingga konsumen Anda memproses semua peristiwa dalam sesi pelacakan, BufferCallback mengembalikan FALSE, atau Anda memanggil CloseTrace.

Sebelum Windows Vista: Anda dapat memanggil CloseTrace hanya setelah ProcessTrace kembali.

Untuk contoh yang menunjukkan cara menggunakan peristiwa yang diterbitkan menggunakan file manifes, MOF, atau TMF, lihat Mengambil Data Peristiwa Menggunakan TDH. Perhatikan bahwa dimulai dengan Windows Vista, Anda harus menggunakan fungsi pembantu data pelacakan (TDH) untuk mengonsumsi peristiwa.

Untuk contoh yang menunjukkan cara menggunakan peristiwa yang diterbitkan menggunakan MOF, lihat Mengambil Data Peristiwa Menggunakan MOF.