header traceloggingprovider.h

TraceLogging adalah sistem untuk mencatat peristiwa yang menjelaskan sendiri peristiwa yang dapat didekodekan tanpa manifes. Di Windows, TraceLogging digunakan untuk menghasilkan peristiwa Pelacakan Peristiwa untuk Windows (ETW ).

Header TraceLoggingProvider.h di Windows SDK memiliki makro dan fungsi sebaris untuk menghasilkan peristiwa ETW yang dikodekan TraceLogging untuk kode kernel dan mode pengguna menggunakan C atau C++.

Catatan

TraceLoggingProvider.h memerlukan nilai konstanta waktu kompilasi untuk atribut peristiwa seperti nama penyedia, nama peristiwa, dan nama bidang. Untuk meminimalkan overhead runtime, TraceLoggingProvider.h membangun struktur datanya pada waktu kompilasi dan menyimpan informasi dalam memori baca-saja. Jika Anda perlu menghasilkan peristiwa dinamis runtime, Anda harus menggunakan implementasi TraceLogging yang berbeda seperti TraceLoggingDynamic.

Mulai Cepat

  • Dalam file .c atau .cpp, gunakan makro TRACELOGGING_DEFINE_PROVIDER untuk mendeklarasikan handel penyedia global. Handel penyedia mewakili koneksi komponen Anda ke ETW.
  • Pada startup komponen (misalnya di main, , wmain, DllMainatau DriverEntry), gunakan fungsi TraceLoggingRegister untuk membuka koneksi komponen Anda ke ETW.
  • Pada penonaktifan komponen, gunakan fungsi TraceLoggingUnregister untuk menutup koneksi komponen Anda ke ETW.
  • Selama eksekusi komponen, gunakan makro TraceLoggingWrite untuk menghasilkan peristiwa ETW yang dikodekan TraceLogging.
  • Jika diperlukan, gunakan makro TRACELOGGING_DECLARE_PROVIDER di header untuk mendeklarasikan handel penyedia agar dapat digunakan di bagian lain komponen Anda.
  • Gunakan alat seperti WPR, tracelog, atau traceview untuk mengumpulkan jejak.
  • Gunakan alat seperti WPA, tracefmt, atau traceview untuk mendekode dan melihat jejak.

Contoh

#include <windows.h> // or <wdm.h> for kernel-mode.
#include <winmeta.h> // For event level definitions.
#include <TraceLoggingProvider.h>

TRACELOGGING_DEFINE_PROVIDER( // defines g_hProvider
    g_hProvider, // Name of the provider handle
    "MyCompany.MyComponent", // Human-readable name for the provider
    // {ce5fa4ea-ab00-5402-8b76-9f76ac858fb5}
    (0xce5fa4ea,0xab00,0x5402,0x8b,0x76,0x9f,0x76,0xac,0x85,0x8f,0xb5));

int main(int argc, char* argv[]) // or DriverEntry for kernel-mode.
{
    TraceLoggingRegister(g_hProvider);

    TraceLoggingWrite(
        g_hProvider,
        "MyEvent1",
        TraceLoggingLevel(WINEVENT_LEVEL_WARNING), // Levels defined in <winmeta.h>
        TraceLoggingKeyword(MyEventCategories), // Provider-defined categories
        TraceLoggingString(argv[0], "arg0"), // field name is "arg0"
        TraceLoggingInt32(argc)); // field name is implicitly "argc"

    TraceLoggingUnregister(g_hProvider);
    return 0;
}

Untuk informasi selengkapnya, lihat:

traceloggingprovider.h berisi antarmuka pemrograman berikut:

Fungsi

 
TRACELOGGING_DECLARE_PROVIDER

Teruskan-mendeklarasikan handel untuk penyedia TraceLogging.
TRACELOGGING_DEFINE_PROVIDER

Menentukan handel untuk penyedia TraceLogging.
TRACELOGGING_DEFINE_PROVIDER_STORAGE

Mencadangkan penyimpanan statis untuk handel penyedia TraceLogging yang akan ditentukan oleh pengguna. Lebih suka TRACELOGGING_DEFINE_PROVIDER daripada makro ini.
TraceLoggingBinary

Makro pembungkus TraceLogging yang menambahkan bidang dengan data biner ke peristiwa tersebut.
TraceLoggingChannel

Makro pembungkus TraceLogging yang mengatur saluran untuk peristiwa tersebut.
TraceLoggingCustom

Makro pembungkus TraceLogging yang menambahkan bidang yang dikemas menggunakan serializer kustom ke peristiwa tersebut.
TraceLoggingCustomAttribute

Makro pembungkus TraceLogging yang menambahkan informasi kustom tentang peristiwa tersebut ke dalam PDB.
TraceLoggingDescription

Makro pembungkus TraceLogging yang mengatur deskripsi untuk peristiwa tersebut.
TraceLoggingEventTag

Makro pembungkus TraceLogging yang mengatur tag peristiwa untuk peristiwa tersebut.
TraceLoggingKeyword

Makro pembungkus TraceLogging yang mengatur kata kunci untuk peristiwa tersebut.
TraceLoggingLevel

Makro pembungkus TraceLogging yang mengatur tingkat untuk peristiwa
TraceLoggingOpcode

Makro pembungkus TraceLogging yang mengatur opcode untuk peristiwa
TraceLoggingOptionGroup

Makro TraceLogging untuk digunakan dalam TRACELOGGING_DEFINE_PROVIDER untuk menentukan grup penyedia.
TraceLoggingProviderEnabled

Makro TraceLogging untuk menentukan apakah ada konsumen jejak yang mendengarkan kejadian dari penyedia ini.
TraceLoggingProviderId

Mendapatkan ID penyedia penyedia TraceLogging.
TraceLoggingRegister

Mendaftarkan penyedia TraceLogging sehingga dapat digunakan untuk mencatat peristiwa.
TraceLoggingRegisterEx

Mendaftarkan penyedia TraceLogging sehingga dapat digunakan untuk mencatat peristiwa, menentukan panggilan balik aktifkan ETW.
TraceLoggingSetInformation

Mengonfigurasi penyedia TraceLogging dengan memanggil EventSetInformation.
TraceLoggingSocketAddress

Makro pembungkus TraceLogging yang menambahkan bidang dengan alamat soket ke acara.
TraceLoggingStruct

Makro pembungkus TraceLogging yang menambahkan bidang yang berisi bidang lain ke kejadian.
TraceLoggingUnregister

Membatalkan pendaftaran penyedia TraceLogging.
TraceLoggingValue

Makro pembungkus TraceLogging untuk C++ yang menambahkan bidang dengan jenis yang disimpulkan secara otomatis ke peristiwa.
TraceLoggingWrite

Memancarkan peristiwa TraceLogging.
TraceLoggingWriteActivity

Memancarkan peristiwa TraceLogging dengan ID aktivitas tertentu.