Bagaimana cara menambahkan awalan dan akhiran ke pesan pelacakan?
Anda dapat menggunakan blok konfigurasi Preproscessor WPP untuk menambahkan data ke pesan pelacakan.
Blok konfigurasi WPP ditentukan oleh konfigurasi begin_wpp dan pernyataan end_wpp yang Anda tempatkan dalam kode sumber Anda.
konfigurasi begin_wpp
...
blok konfigurasi
...
end_wpp
Jika Anda meletakkan data konfigurasi dalam file header, tentukan nama file header di properti proyek Anda (untuk Pelacakan WPP). Di bawah Opsi File pada halaman properti, tentukan file Konfigurasi Pemindaian. Lihat Prapemroscessor WPP untuk informasi selengkapnya.
Sintaks blok konfigurasi
USEPREFIX (Function_Name, "Format string");
Menentukan awalan string format yang akan digunakan saat peristiwa dicatat. Parameter pertama adalah nama fungsi yang menerapkan awalan ini. Parameter kedua adalah string format yang akan digunakan. Untuk menggunakan nilai default, tentukan %! STDPREFIX!. Awalan pesan pelacakan default menentukan nomor CPU, ID proses, ID utas, stempel waktu dalam format Waktu Universal Terkoordinasi (UTC), dan nama ramah GUID kontrol.
//USEPREFIX (TRACE_RETURN, "%!STDPREFIX!");
FUNC Function_Name{args}(EXP);
Menentukan nama dan tanda tangan fungsi pelacakan. Kurung kurawal { } digunakan untuk menentukan nilai yang ditetapkan untuk fungsi. Dalam contoh berikut, fungsi mengambil satu argumen dan tanpa string format, dan LEVEL diatur ke ERROR.
//FUNC TRACE_RETURN{LEVEL=ERROR}(EXP);
USESUFFIX (Function_Name, "Format string");
Menentukan akhiran string format yang akan digunakan saat peristiwa dicatat. Parameter pertama adalah nama fungsi yang menerapkan akhiran ini. Parameter kedua adalah string format yang akan digunakan. Anda dapat menggunakan nama variabel dalam kode Anda.
//USESUFFIX (TRACE_RETURN, "Function Return=%!HRESULT!",EXP);
Contoh blok konfigurasi
Contoh berikut mendefinisikan makro pelacakan yang menggunakan awalan dan akhiran string format. Jika Anda mendefinisikan makro pelacakan, Anda juga harus menentukan makro untuk memilih pencatat dan untuk memeriksa apakah peristiwa harus dicatat.
//MACRO: TRACE_RETURN
//
//begin_wpp config
//USEPREFIX (TRACE_RETURN, "%!STDPREFIX!");
//FUNC TRACE_RETURN{LEVEL=ERROR}(EXP);
//USESUFFIX (TRACE_RETURN, "Function Return=%!HRESULT!",EXP);
//end_wpp
//
// The next two macros are for checking if the event should be logged, and for
// choosing the logger handle to use when calling the ETW trace API
//
#define WPP_LEVEL_EXP_ENABLED(LEVEL, HR) WPP_FLAG_ENABLED(LEVEL)
#define WPP_LEVEL_EXP_LOGGER(LEVEL, HR) WPP_FLAG_LOGGER(LEVEL)
Contoh hasil pelacakan
[0]0F78.0460::06/24/2006-15:54:54.880 [tracedrv]Function Return=0x8000000f(STATUS_DEVICE_POWERED_OFF)