Como você define tipos de dados personalizados?
O ETW (Rastreamento de Eventos para Windows) define vários tipos simples e complexos para uso nas funções de rastreamento. Esses tipos são declarados no arquivo Defaultwpp.ini. No entanto, você pode criar seus próprios tipos de dados personalizados.
Você usa um tipo de dados personalizado quando deseja declarar variáveis e usar termos significativos, em vez de inteiros, para descrever o valor das variáveis.
Por exemplo, a variável DiskState contém o estado do disco. Veja a seguir os valores de DiskState:
DiskOffline = 0
DiskOnline = 1
DiskFailed = 2
DiskStalled = 3
Em vez de ler "DiskState=2" em uma mensagem de rastreamento e, em seguida, ter que pesquisar o significado de 2, você pode definir um tipo personalizado chamado DiskState, para obter uma mensagem de rastreamento que diz "DiskState é Falha".
Criando um tipo de dados personalizado
Para criar um tipo de dados personalizado, conclua as seguintes etapas:
Crie um arquivo de configuração local que tenha a extensão de nome de arquivo .ini, como localwpp.ini. Você não pode adicionar um tipo personalizado a um cabeçalho ou arquivo de origem.
Use a constante TYPEMACRO para definir o tipo de dados personalizado.
Identifique os dados de configuração em suas fontes ou arquivo de cabeçalho.
Adicione o parâmetro -ini à macro RUN_WPP no arquivo de origem.
Use o tipo de dados personalizado em mensagens de rastreamento.
Definindo uma constante TYPEMACRO
Defina uma constante TYPEMACRO que tenha o seguinte formato. Os valores são definidos como uma lista de cadeias de caracteres.
TYPEMACRO(Type,{ItemListLong | ItemListShort | ItemListByteShort | ItemListByteLong},(Value1,Value2...));
em que:
ItemListShort
Inteiro de 16 bits com sinal.
ItemListLong
Inteiro de 32 bits assinado ou sem sinal.
ItemSetByteShort
Valor de bit de 16 bits assinado.
ItemSetByteLong
Valor de bits de 32 bits assinado ou não assinado.
Por exemplo:
TYPEMACRO(DiskState,ItemListLong(DiskOffline,DiskOnline,DiskFailed,DiskStalled));
Identificando os dados de configuração
Se você adicionou o tipo de dados personalizado a um arquivo que tem outro código, como um arquivo de origem ou um arquivo de cabeçalho, use as instruções begin_wpp config e end_wpp para identificar os dados de configuração no arquivo. Por exemplo:
// begin_wpp config
//TYPEMACRO(DiskState,ItemListLong(DiskOffline,DiskOnline,DiskFailed,DiskStalled));
// end_wpp
Se você adicionou o tipo de dados personalizado a um arquivo de configuração local, as instruções begin_wpp configuração e end_wpp não serão necessárias.
Adicionar o parâmetro -ini
Ao criar um arquivo de configuração local para um tipo personalizado, você precisa adicionar o parâmetro -ini à instrução RUN_WPP que invoca o pré-processador WPP.
O parâmetro -ini direciona o ETW para pesquisar dados de configuração em arquivos de configuração (.ini), além de usar Defaultwpp.ini. Por exemplo:
RUN_WPP -km -ini:localwpp.ini
Importante
Você não deve especificar a opção -km na diretiva RUN_WPP para aplicativos no modo de usuário ou DLLs (bibliotecas de vínculo dinâmico).
Usando o tipo de dados personalizado
Depois de definir um tipo de dados personalizado, você pode usá-lo em mensagens de rastreamento. Preceda o nome do tipo com um sinal de porcentagem (%) e coloque-o entre pontos de exclamação (!). Por exemplo:
DoTraceMessage(INFO,"Disk State is %!diskstate!",DiskState);
A mensagem de rastreamento resultante usa a constante que você definiu para representar o valor:
DiskState is Offline.