Como adiciono um prefixo e um sufixo a uma mensagem de rastreamento?
Você pode usar um bloco de configuração do pré-processador WPP para adicionar dados às mensagens de rastreamento.
O bloco de configuração do WPP é definido pelas instruções begin_wpp config e end_wpp que você coloca no código-fonte.
begin_wpp configuração
...
bloco de configuração
...
end_wpp
Se você colocar dados de configuração em um arquivo de cabeçalho, especifique o nome do arquivo de cabeçalho nas propriedades do projeto (para rastreamento WPP). Em Opções de Arquivo na página de propriedades, especifique o arquivo de Configuração de Digitalização. Consulte Pré-processador WPP para obter mais informações.
Sintaxe do bloco de configuração
USEPREFIX (Function_Name, "Cadeia de caracteres de formato");
Define um prefixo de cadeia de caracteres de formato a ser usado quando o evento é registrado. O primeiro parâmetro é o nome da função à qual esse prefixo se aplica. O segundo parâmetro é a cadeia de caracteres de formato a ser usada. Para usar o valor padrão, especifique %! STDPREFIX!. O prefixo de mensagem de rastreamento padrão especifica o número da CPU, a ID do processo, a ID do thread, o carimbo de data/hora no formato UTC (Tempo Universal Coordenado) e o nome amigável do GUID do controle.
//USEPREFIX (TRACE_RETURN, "%!STDPREFIX!");
FUNC Function_Name{args}(EXP);
Define o nome e a assinatura da função de rastreamento. As chaves { } são usadas para definir valores definidos para a função. No exemplo a seguir, a função usa um argumento e nenhuma cadeia de caracteres de formato, e o LEVEL é definido como ERROR.
//FUNC TRACE_RETURN{LEVEL=ERROR}(EXP);
USESUFFIX (Function_Name, "Format string");
Define o sufixo da cadeia de caracteres de formato a ser usado quando o evento é registrado. O primeiro parâmetro é o nome da função à qual esse sufixo se aplica. O segundo parâmetro é a cadeia de caracteres de formato a ser usada. Você pode usar nomes de variáveis em seu código.
//USESUFFIX (TRACE_RETURN, "Function Return=%!HRESULT!",EXP);
Exemplo de bloco de configuração
O exemplo a seguir define uma macro de rastreamento que usa o prefixo e o sufixo da cadeia de caracteres de formato. Se você estiver definindo uma macro de rastreamento, também deverá definir macros para selecionar o agente e verificar se o evento deve ser registrado.
//MACRO: TRACE_RETURN
//
//begin_wpp config
//USEPREFIX (TRACE_RETURN, "%!STDPREFIX!");
//FUNC TRACE_RETURN{LEVEL=ERROR}(EXP);
//USESUFFIX (TRACE_RETURN, "Function Return=%!HRESULT!",EXP);
//end_wpp
//
// The next two macros are for checking if the event should be logged, and for
// choosing the logger handle to use when calling the ETW trace API
//
#define WPP_LEVEL_EXP_ENABLED(LEVEL, HR) WPP_FLAG_ENABLED(LEVEL)
#define WPP_LEVEL_EXP_LOGGER(LEVEL, HR) WPP_FLAG_LOGGER(LEVEL)
Exemplos de resultados de rastreamento
[0]0F78.0460::06/24/2006-15:54:54.880 [tracedrv]Function Return=0x8000000f(STATUS_DEVICE_POWERED_OFF)