Exemplo 9: Criando um arquivo TMF
O comando a seguir direciona Tracefmt para formatar e exibir as mensagens de rastreamento em Tracedrv.etl, um log de rastreamento gerado pelo Tracedrv. TraceDrv, um driver de exemplo que foi projetado para rastreamento de software, está disponível no repositório de exemplos de driver do Windows no GitHub.
O comando inclui o parâmetro -i , que direciona Tracefmt para criar um arquivo TMF para Tracedrv.
tracefmt d:\tracedrv\tracedrv.etl -i d:\tracedrv\tracedrv.sys -r d:\tracedrv
-p d:\tracedrv\tmfs -o d:\tracedrv\tracedrv1.txt -v
O comando usa o parâmetro -i para indicar o caminho totalmente qualificado para o arquivo de imagem para Tracedrv, Tracedrv.sys, no WDK.
-i d:\tracedrv\tracedrv.sys
Ele usa o parâmetro -r para indicar o caminho totalmente qualificado para a versão completa do arquivo de símbolo PDB para Tracedrv, Tracedrv.pdb. Observe que você especifica um caminho com esse parâmetro, mas não um nome de arquivo. Tracefmt localiza a versão correta do arquivo de símbolo com base no arquivo de imagem especificado por -i.
-r d:\tracedrv
O comando usa o parâmetro -p para direcionar Tracefmt para colocar o arquivo TMF que ele cria para Tracedrv no diretório d:\tracedrv\tmfs .
-p d:\tracedrv\tmfs
O comando usa o parâmetro -o para direcionar Tracefmt para colocar o arquivo de saída de mensagens de rastreamento formatadas no arquivo d:\tracedrv\tracedrv1.txt . Esse parâmetro também coloca o arquivo de resumo no mesmo diretório com o nome do arquivo Tracedrv.txt.sum.
-o d:\tracedrv\tracedrv1.txt
O parâmetro -v solicita mensagens detalhadas (detalhadas).
Em resposta a esse comando, o Tracefmt procura e localiza o arquivo PDB para Tracedrv.sys no diretório d:\tracedrv. Ele extrai as instruções de formatação da mensagem de rastreamento do arquivo PDB e as armazena em um arquivo TMF, conforme mostrado na instrução em negrito na saída a seguir. O nome do arquivo TMF é o GUID da mensagem do provedor de rastreamento no Tracedrv. O Tracefmt também cria um arquivo TMC (controle de mensagem de rastreamento) e o coloca no mesmo diretório.
Depois que o Tracefmt cria o arquivo TMF, ele lê o arquivo para localizar as instruções de formatação para as mensagens de rastreamento no log de rastreamento Tracedrv.etl. Ele começa examinando o arquivo Default.tmf e localiza o arquivo TMf que ele criou no diretório d:\tracedrv\tmfs.
Antes de formatar os dados, o Tracefmt exibe dados sobre o log de rastreamento. Os dados começam com a instrução Logfile d:\tracedrv\tracedrv.etl .
As instruções finais na saída mostram que o Tracefmt formatou com êxito os 13 eventos no log de rastreamento e criou os arquivos 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
A saída principal dessa execução do Tracefmt é Tracedrv.txt, um arquivo de texto que contém a versão formatada das mensagens de rastreamento em Tracedrv.etl. O texto a seguir mostra o conteúdo 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)