Come vengono usate le espressioni Trace-If?
Per comprendere come vengono usate le espressioni Trace-If, viene fornito un esempio di tali espressioni che illustrano l'utilizzo e la sintassi delle istruzioni "begin_wpp config". Questo esempio fa riferimento a una funzione TRACE_RETURN, che registra un evento se l'espressione FAILED(HR) è true.
Se FAILED(HR) è true, si supponga che sia presente un file di origine con stato ULONG e che venga registrato un evento chiamando TRACE_RETURN(Status).
//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
#define WPP_LEVEL_EXP_PRE(LEVEL, HR) {if (FAILED(HR)) {
#define WPP_LEVEL_EXP_POST(LEVEL, HR) ;}}
#define WPP_LEVEL_EXP_ENABLED(LEVEL, HR) WPP_LEVEL_ENABLED(LEVEL)
#define WPP_LEVEL_EXP_LOGGER(LEVEL, HR) WPP_LEVEL_LOGGER(ERROR)
Nell'esempio precedente si noti che TRACE_RETURN viene definito tra le righe di configurazione begin_wpp e end_wpp. Questa definizione viene quindi seguita dalla macro PRE/POST e dalle definizioni ENABLED e LOGGER.
La configurazione begin_wpp e i delimitatori end_wpp definiscono un blocco di configurazione analizzato dal preprocessore. Il file contenente la definizione del blocco di configurazione deve essere analizzato da WPP. Questo file viene specificato con il parametro -scan:file.extension.
Nota Per informazioni su -scan e altre opzioni di RUN_WPP , vedere Preprocessore WPP.
L'elenco seguente fornisce altre informazioni su ogni istruzione nel blocco di configurazione di esempio:
USEPREFIX
Definisce una stringa di formato prefisso da utilizzare quando viene registrato l'evento. Nell'esempio viene usato STDPREFIX. Per i valori disponibili con STDPREFIX, vedere Ricerca per categorie modificare l'output del prefisso in ogni riga di traccia?
USESUFFIX
Definisce una stringa di formato suffisso da utilizzare quando viene registrato l'evento.
FUNC
Definisce il nome e la firma della funzione di traccia. Nell'esempio la funzione accetta un parametro e nessuna stringa di formato.
Per un altro esempio di Trace-If espressioni, vedere la sezione Ricerca per categorie includere un'istruzione di traccia in una macro C/C++? .