Comment définissez-vous des types de données personnalisés ?
Le suivi d’événements pour Windows (ETW) définit plusieurs types simples et complexes à utiliser dans les fonctions de suivi. Ces types sont déclarés dans le fichier Defaultwpp.ini. Toutefois, vous pouvez créer vos propres types de données personnalisés.
Vous utilisez un type de données personnalisé lorsque vous souhaitez déclarer des variables et utiliser des termes explicites(au lieu d’entiers) pour décrire la valeur des variables.
Par exemple, la variable DiskState contient l’état du disque. Les valeurs de DiskState sont les suivantes :
DiskOffline = 0
DiskOnline = 1
DiskFailed = 2
DiskStalled = 3
Au lieu de lire « DiskState=2 » dans un message de trace, puis de devoir rechercher la signification de 2, vous pouvez définir un type personnalisé appelé DiskState pour obtenir un message de trace indiquant « DiskState is Failed ».
Création d’un type de données personnalisé
Pour créer un type de données personnalisé, procédez comme suit :
Créez un fichier de configuration local qui a l’extension de nom de fichier .ini, par exemple localwpp.ini. Vous ne pouvez pas ajouter un type personnalisé à un en-tête ou à un fichier source.
Utilisez la constante TYPEMACRO pour définir le type de données personnalisé.
Identifiez les données de configuration dans vos sources ou fichier d’en-tête.
Ajoutez le paramètre -ini à la macro RUN_WPP dans votre fichier source.
Utilisez le type de données personnalisé dans les messages de trace.
Définition d’une constante TYPEMACRO
Définissez une constante TYPEMACRO au format suivant. Les valeurs sont définies comme une liste de chaînes.
TYPEMACRO(Type,{ItemListLong | ItemListShort | ItemListByteShort | ItemListByteLong},(Value1,Value2...));
où :
ItemListShort
Entier signé 16 bits.
ItemListLong
Entier 32 bits signé ou non signé.
ItemSetByteShort
Valeur de bits 16 bits signée.
ItemSetByteLong
Valeur de bits 32 bits signée ou non signée.
Par exemple :
TYPEMACRO(DiskState,ItemListLong(DiskOffline,DiskOnline,DiskFailed,DiskStalled));
Identification des données de configuration
Si vous avez ajouté le type de données personnalisé à un fichier qui contient un autre code, tel qu’un fichier source ou un fichier d’en-tête, utilisez les instructions begin_wpp config et end_wpp pour identifier les données de configuration dans le fichier. Par exemple :
// begin_wpp config
//TYPEMACRO(DiskState,ItemListLong(DiskOffline,DiskOnline,DiskFailed,DiskStalled));
// end_wpp
Si vous avez ajouté le type de données personnalisé à un fichier de configuration local, les instructions config et end_wpp begin_wpp ne sont pas nécessaires.
Ajouter le paramètre -ini
Lorsque vous créez un fichier de configuration local pour un type personnalisé, vous devez ajouter le paramètre -ini à l’instruction RUN_WPP qui appelle le préprocesseur WPP.
Le paramètre -ini indique à ETW de rechercher des données de configuration dans les fichiers de configuration (.ini), en plus d’utiliser Defaultwpp.ini. Par exemple :
RUN_WPP -km -ini:localwpp.ini
Important
Vous ne devez pas spécifier le commutateur -km dans la directive RUN_WPP pour les applications en mode utilisateur ou les bibliothèques de liens dynamiques (DLL).
Utilisation du type de données personnalisé
Une fois que vous avez défini un type de données personnalisé, vous pouvez l’utiliser dans les messages de trace. Faites précéder le nom de type d’un signe de pourcentage (%) et entourez-le de points d’exclamation ( !). Par exemple :
DoTraceMessage(INFO,"Disk State is %!diskstate!",DiskState);
Le message de trace résultant utilise la constante que vous avez définie pour représenter la valeur :
DiskState is Offline.