Beispiel 9: Erstellen einer TMF-Datei

Der folgende Befehl weist Tracefmt an, die Ablaufverfolgungsmeldungen in Tracedrv.etl, einem von Tracedrv generierten Ablaufverfolgungsprotokoll, zu formatieren und anzuzeigen. TraceDrv, ein Beispieltreiber, der für die Softwareablaufverfolgung entwickelt wurde, ist im Repository für Windows-Treiberbeispiele auf GitHub verfügbar.

Der Befehl enthält den Parameter -i , der Tracefmt angibt, eine TMF-Datei für Tracedrv zu erstellen.

tracefmt d:\tracedrv\tracedrv.etl -i d:\tracedrv\tracedrv.sys -r d:\tracedrv 
-p d:\tracedrv\tmfs -o d:\tracedrv\tracedrv1.txt -v

Der Befehl verwendet den Parameter -i , um den vollqualifizierten Pfad zur Bilddatei für Tracedrv(Tracedrv.sys) im WDK anzugeben.

-i d:\tracedrv\tracedrv.sys

Der Parameter -r wird verwendet, um den vollqualifizierten Pfad zur Vollversion der PDB-Symboldatei für Tracedrv, Tracedrv.pdb, anzugeben. Beachten Sie, dass Sie einen Pfad mit diesem Parameter angeben, aber keinen Dateinamen. Tracefmt sucht die richtige Version der Symboldatei basierend auf der durch -i angegebenen Imagedatei.

-r d:\tracedrv

Der Befehl verwendet den Parameter -p , um Tracefmt anzuordnen, die TMF-Datei, die es für Tracedrv erstellt, im Verzeichnis d:\tracedrv\tmfs zu platzieren.

-p d:\tracedrv\tmfs

Der Befehl verwendet den Parameter -o , um Tracefmt anzuordnen, die Ausgabedatei der formatierten Ablaufverfolgungsmeldungen in der d:\tracedrv\tracedrv1.txt-Datei zu platzieren. Dieser Parameter platziert auch die Zusammenfassungsdatei im selben Verzeichnis mit dem Dateinamen Tracedrv.txt.sum.

-o d:\tracedrv\tracedrv1.txt

Der Parameter -v fordert detaillierte (ausführliche) Meldungen an.

Als Reaktion auf diesen Befehl sucht Tracefmt nach der PDB-Datei für Tracedrv.sys im Verzeichnis d:\tracedrv. Es extrahiert die Formatierungsanweisungen für Ablaufverfolgungsnachrichten aus der PDB-Datei und speichert sie in einer TMF-Datei, wie in der Anweisung in fett formatierter Form in der folgenden Ausgabe gezeigt. Der Name der TMF-Datei ist die Nachrichten-GUID des Ablaufverfolgungsanbieters in Tracedrv. Tracefmt erstellt auch eine TMC-Datei (Trace Message Control) und platziert sie im selben Verzeichnis.

Nachdem Tracefmt die TMF-Datei erstellt hat, liest sie die Datei, um die Formatierungsanweisungen für die Ablaufverfolgungsmeldungen im Tracedrv.etl-Ablaufverfolgungsprotokoll zu finden. Sie beginnt mit der Suche in der Datei Default.tmf und sucht nach der TMf-Datei, die sie im Verzeichnis d:\tracedrv\tmfs erstellt hat.

Vor dem Formatieren der Daten zeigt Tracefmt Daten zum Ablaufverfolgungsprotokoll an. Die Daten beginnen mit der Logfile d:\tracedrv\tracedrv.etl-Anweisung .

Die letzten Anweisungen in der Ausgabe zeigen, dass Tracefmt die 13 Ereignisse im Ablaufverfolgungsprotokoll erfolgreich formatiert und die dateien Tracedrv1.txt und Tracedrv1.txt.sum erstellt hat.

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

Die primäre Ausgabe dieser Tracefmt-Ausführung ist Tracedrv.txt, eine Textdatei, die die formatierte Version der Ablaufverfolgungsmeldungen in Tracedrv.etl enthält. Der folgende Text zeigt den Inhalt von 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)