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
,DllMain
atauDriverEntry
), 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:
- TraceLogging
- Makro pembungkus TraceLogging
- TraceLoggingWrite
- TRACELOGGING_DECLARE_PROVIDER
- TRACELOGGING_DEFINE_PROVIDER
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. |