Esempio 9: Creazione di un file TMF
Il comando seguente indirizza Tracefmt a formattare e visualizzare i messaggi di traccia in Tracedrv.etl, un log di traccia generato da Tracedrv. TraceDrv, un driver di esempio progettato per la traccia software, è disponibile nel repository di esempi di driver Windows in GitHub.
Il comando include il parametro -i , che indirizza Tracefmt per creare un file TMF per Tracedrv.
tracefmt d:\tracedrv\tracedrv.etl -i d:\tracedrv\tracedrv.sys -r d:\tracedrv
-p d:\tracedrv\tmfs -o d:\tracedrv\tracedrv1.txt -v
Il comando usa il parametro -i per indicare il percorso completo del file di immagine per Tracedrv, Tracedrv.sys, nel WDK.
-i d:\tracedrv\tracedrv.sys
Usa il parametro -r per indicare il percorso completo della versione completa del file di simboli PDB per Tracedrv, Tracedrv.pdb. Si noti che si specifica un percorso con questo parametro, ma non un nome file. Tracefmt trova la versione corretta del file di simboli in base al file di immagine specificato da -i.
-r d:\tracedrv
Il comando usa il parametro -p per indirizzare Tracefmt per inserire il file TMF creato per Tracedrv nella directory d:\tracedrv\tmfs .
-p d:\tracedrv\tmfs
Il comando usa il parametro -o per indirizzare Tracefmt per inserire il file di output dei messaggi di traccia formattati nel file d:\tracedrv\tracedrv1.txt . Questo parametro inserisce anche il file di riepilogo nella stessa directory con il nome file Tracedrv.txt.sum.
-o d:\tracedrv\tracedrv1.txt
Il parametro -v richiede messaggi dettagliati (dettagliato).
In risposta a questo comando, Tracefmt cerca e trova il file PDB per Tracedrv.sys nella directory d:\tracedrv. Estrae le istruzioni di formattazione del messaggio di traccia dal file PDB e le archivia in un file TMF, come illustrato nell'istruzione in grassetto nell'output che segue. Il nome del file TMF è il GUID del messaggio del provider di traccia in Tracedrv. Tracefmt crea anche un file TMC (Trace Message Control) e lo inserisce nella stessa directory.
Dopo che Tracefmt crea il file TMF, legge il file per trovare le istruzioni di formattazione per i messaggi di traccia nel log di traccia. Inizia cercando nel file Default.tmf e trova il file TMf creato nella directory d:\tracedrv\tmfs.
Prima di formattare i dati, Tracefmt visualizza i dati relativi al log di traccia. I dati iniziano con l'istruzione Logfile d:\tracedrv\tracedrv.etl .
Le istruzioni finali nell'output mostrano che Tracefmt ha formattato correttamente i 13 eventi nel log di traccia e creato i file Tracedrv1.txt e 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
L'output primario di questa esecuzione Tracefmt è Tracedrv.txt, un file di testo contenente la versione formattata dei messaggi di traccia in Tracedrv.etl. Il testo seguente mostra il contenuto di 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)