Поделиться через


Пример 9. Создание файла TMF

Следующая команда направляет Tracefmt на форматирование и отображение сообщений трассировки в Tracedrv.etl, журнале трассировки, созданном Tracedrv. TraceDrv, пример драйвера, предназначенного для трассировки программного обеспечения, доступен в репозитории примеров драйверов Windows на сайте GitHub.

Команда включает параметр -i , который направляет Tracefmt на создание TMF-файла для Tracedrv.

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

Команда использует параметр -i , чтобы указать полный путь к файлу образа для Tracedrv, Tracedrv.sys, в WDK.

-i d:\tracedrv\tracedrv.sys

Параметр -r используется для указания полного пути к полной версии файла символов PDB для Tracedrv, Tracedrv.pdb. Обратите внимание, что вы указываете путь с этим параметром, но не имя файла. Tracefmt находит правильную версию файла символов на основе файла изображения, указанного параметром -i.

-r d:\tracedrv

Команда использует параметр -p , чтобы направить Tracefmt для размещения файла TMF, создаваемого для Tracedrv, в каталог d:\tracedrv\tmfs .

-p d:\tracedrv\tmfs

Команда использует параметр -o , чтобы направить Tracefmt на размещение выходного файла отформатированных сообщений трассировки в файлd:\tracedrv\tracedrv1.txt . Этот параметр также помещает файл сводки в тот же каталог с именем файла Tracedrv.txt.sum.

-o d:\tracedrv\tracedrv1.txt

Параметр -v запрашивает подробные (подробные) сообщения.

В ответ на эту команду Tracefmt ищет И находит PDB-файл для Tracedrv.sys в каталоге d:\tracedrv. Он извлекает инструкции по форматированию сообщений трассировки из PDB-файла и сохраняет их в TMF-файле, как показано в инструкции полужирным шрифтом в последующих выходных данных. Имя файла TMF — это GUID сообщения поставщика трассировки в Tracedrv. Tracefmt также создает файл TMC и помещает его в тот же каталог.

После создания TMF-файла Tracefmt считывает файл, чтобы найти инструкции по форматированию для сообщений трассировки в журнале трассировки Tracedrv.etl. Он начинается с поиска в файле Default.tmf и находит файл TMf, созданный в каталоге d:\tracedrv\tmfs.

Перед форматированием данных Tracefmt отображает данные о журнале трассировки. Данные начинаются с инструкции logfile d:\tracedrv\tracedrv.etl .

Заключительные инструкции в выходных данных показывают, что Tracefmt успешно отформатирует 13 событий в журнале трассировки и создал файлы Tracedrv1.txt и 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

Основными выходными данными выполнения Tracefmt является Tracedrv.txt, текстовый файл, содержащий форматированную версию сообщений трассировки в Tracedrv.etl. В следующем тексте показано содержимое 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)