Comment faire ajouter un préfixe et un suffixe à un message de trace ?
Vous pouvez utiliser un bloc de configuration de préprocesseur WPP pour ajouter des données aux messages de suivi.
Le bloc de configuration WPP est défini par la configuration begin_wpp et les instructions end_wpp que vous placez dans votre code source.
configuration begin_wpp
...
bloc de configuration
...
end_wpp
Si vous placez des données de configuration dans un fichier d’en-tête, spécifiez le nom du fichier d’en-tête dans les propriétés de votre projet (pour le suivi WPP). Sous Options de fichier sur la page de propriétés, spécifiez le fichier de configuration de l’analyse. Pour plus d’informations, consultez le préprocesseur WPP.
Syntaxe de bloc de configuration
USEPREFIX (Function_Name, « Chaîne de format » ) ;
Définit un préfixe de chaîne de format à utiliser lorsque l’événement est journalisé. Le premier paramètre est le nom de la fonction à laquelle ce préfixe s’applique. Le deuxième paramètre est la chaîne de format à utiliser. Pour utiliser la valeur par défaut, spécifiez % ! STDPREFIX !. Le préfixe de message de trace par défaut spécifie le numéro d’UC, l’ID de processus, l’ID de thread, l’horodatage au format UTC (Temps universel coordonné) et le nom convivial du GUID de contrôle.
//USEPREFIX (TRACE_RETURN, "%!STDPREFIX!");
FUNC Function_Name{args}(EXP) ;
Définit le nom et la signature de la fonction de trace. Les accolades { } sont utilisées pour définir des valeurs définies pour la fonction. Dans l’exemple suivant, la fonction prend un argument et aucune chaîne de format, et level est défini sur ERROR.
//FUNC TRACE_RETURN{LEVEL=ERROR}(EXP);
USESUFFIX (Function_Name, « Chaîne de format » ) ;
Définit le suffixe de chaîne de format à utiliser lorsque l’événement est journalisé. Le premier paramètre est le nom de la fonction à laquelle ce suffixe s’applique. Le deuxième paramètre est la chaîne de format à utiliser. Vous pouvez utiliser des noms de variables dans votre code.
//USESUFFIX (TRACE_RETURN, "Function Return=%!HRESULT!",EXP);
Exemple de bloc de configuration
L’exemple suivant définit une macro de trace qui utilise le préfixe et le suffixe de chaîne de format. Si vous définissez une macro de suivi, vous devez également définir des macros pour sélectionner l’enregistreur d’événements et vérifier si l’événement doit être journalisé.
//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)
Exemples de résultats de trace
[0]0F78.0460::06/24/2006-15:54:54.880 [tracedrv]Function Return=0x8000000f(STATUS_DEVICE_POWERED_OFF)