Exemple 9 : Création d’un fichier TMF
La commande suivante indique à Tracefmt de mettre en forme et d’afficher les messages de trace dans Tracedrv.etl, un journal de trace généré par Tracedrv. TraceDrv, un exemple de pilote conçu pour le suivi logiciel, est disponible dans le référentiel d’exemples de pilotes Windows sur GitHub.
La commande inclut le paramètre -i , qui indique à Tracefmt de créer un fichier TMF pour Tracedrv.
tracefmt d:\tracedrv\tracedrv.etl -i d:\tracedrv\tracedrv.sys -r d:\tracedrv
-p d:\tracedrv\tmfs -o d:\tracedrv\tracedrv1.txt -v
La commande utilise le paramètre -i pour indiquer le chemin complet du fichier image pour Tracedrv, Tracedrv.sys, dans le WDK.
-i d:\tracedrv\tracedrv.sys
Il utilise le paramètre -r pour indiquer le chemin complet de la version complète du fichier de symboles PDB pour Tracedrv, Tracedrv.pdb. Notez que vous spécifiez un chemin d’accès avec ce paramètre, mais pas un nom de fichier. Tracefmt recherche la version correcte du fichier de symboles en fonction du fichier image spécifié par -i.
-r d:\tracedrv
La commande utilise le paramètre -p pour indiquer à Tracefmt de placer le fichier TMF qu’elle crée pour Tracedrv dans le répertoire d :\tracedrv\tmfs .
-p d:\tracedrv\tmfs
La commande utilise le paramètre -o pour indiquer à Tracefmt de placer le fichier de sortie des messages de trace mis en forme dans le fichier d:\tracedrv\tracedrv1.txt . Ce paramètre place également le fichier récapitulatif dans le même répertoire avec le nom de fichier Tracedrv.txt.sum.
-o d:\tracedrv\tracedrv1.txt
Le paramètre -v demande des messages détaillés (détaillés).
En réponse à cette commande, Tracefmt recherche et recherche le fichier PDB pour Tracedrv.sys dans le répertoire d :\tracedrv. Il extrait les instructions de mise en forme du message de trace du fichier PDB et les stocke dans un fichier TMF, comme indiqué dans l’instruction en gras dans la sortie qui suit. Le nom du fichier TMF est le GUID du message du fournisseur de trace dans Tracedrv. Tracefmt crée également un fichier de contrôle de message de suivi (TMC) et le place dans le même répertoire.
Une fois que Tracefmt a créé le fichier TMF, il lit le fichier pour trouver les instructions de mise en forme des messages de suivi dans le journal de suivi Tracedrv.etl. Il commence par rechercher dans le fichier Default.tmf et recherche le fichier TMf qu’il a créé dans le répertoire d :\tracedrv\tmfs.
Avant de mettre en forme les données, Tracefmt affiche les données relatives au journal de trace. Les données commencent par l’instruction Logfile d :\tracedrv\tracedrv.etl .
Les dernières instructions de la sortie indiquent que Tracefmt a correctement mis en forme les 13 événements dans le journal de suivi et créé les fichiers Tracedrv1.txt et Tracedrv1.txt.sum.
Setting log file to: d:\tracedrv\tracedrv.etl
Searching for matching PDB to d:\tracedrv\tracedrv.sys
Current Symbol Search Path = d:\tracedrv
Extracting TMF files out of found PDB files
DBGHELP: d:\tracedrv\tracedrv.pdb - OK
tracefmt : info BNP0000: WPPFMT generating d:\tracedrv\tmfs\1606d1a7-1682-57d1-65f7-36693800e096.tmf for d:\tracedrv\tracedrv.pdb
tracefmt : info BNP0000: WPPFMT generating d:\tracedrv\tmfs\d58c126f-b309-11d1-969e-0000f875a5bc.tmc for d:\tracedrv\tracedrv.pdb
Examining C:\WinDDK\5066\tools\tracing\i386\default.tmf for message formats, 3 found.
Searching for TMF files on path: d:\tracedrv\tmfs
Logfile d:\tracedrv\tracedrv.etl:
OS version 5.1.2600 (Currently running on 5.1.2600)
Start Time 2005-06-10-14:25:30.827
End Time 2005-06-10-14:26:14.371
Timezone is Pacific Standard Time (Bias is 480mins)
BufferSize 8192 B
Maximum File Size 0 MB
Buffers Written 2
Logger Mode Settings (0) Logfile Mode is not set
ProcessorCount 1
06/10/2005-21:25:45.539 :: 1: Filled= 696, Lost= 0 TotalLost= 0
Processing completed Buffers: 1, Events: 13, EventsLost: 0 :: Format Errors: 0, Unknowns: 0
Event traces dumped to d:\tracedrv\tracedrv1.txt
Event Summary dumped to d:\tracedrv\tracedrv1.txt.sum
La sortie principale de cette exécution tracefmt est Tracedrv.txt, un fichier texte qui contient la version mise en forme des messages de trace dans Tracedrv.etl. Le texte suivant montre le contenu de Tracedrv.txt .
EventTrace
[0]0338.0E40::06/10/2005-14:25:43.968 [tracedrv]IOCTL = 1
[0]0338.0E40::06/10/2005-14:25:43.968 [tracedrv]Hello, 1 Hi
[0]0338.0E40::06/10/2005-14:25:43.968 [tracedrv]Hello, 2 Hi
[0]0338.0E40::06/10/2005-14:25:43.968 [tracedrv]Hello, 3 Hi
[0]0338.0E40::06/10/2005-14:25:43.968 [tracedrv]Machine State :: Offline
[0]0338.0E40::06/10/2005-14:25:43.968 [tracedrv]Function Return=0x8000000f(STATUS_DEVICE_POWERED_OFF)
[0]0338.0E40::06/10/2005-14:25:45.539 [tracedrv]IOCTL = 2
[0]0338.0E40::06/10/2005-14:25:45.539 [tracedrv]Hello, 1 Hi
[0]0338.0E40::06/10/2005-14:25:45.539 [tracedrv]Hello, 2 Hi
[0]0338.0E40::06/10/2005-14:25:45.539 [tracedrv]Hello, 3 Hi
[0]0338.0E40::06/10/2005-14:25:45.539 [tracedrv]Machine State :: Offline
[0]0338.0E40::06/10/2005-14:25:45.539 [tracedrv]Function Return=0x8000000f(STATUS_DEVICE_POWERED_OFF)