Como fazer logon na sessão do agente global
Use o procedimento a seguir para configurar um driver para fazer logon na sessão de rastreamento do Agente Global:
Adicione a definição a seguir ao código do driver. Insira a definição entre a definição de macro WPP_CONTROL_GUIDS e a instrução include para o arquivo de cabeçalho da mensagem de rastreamento.
#define WPP_GLOBALLOGGER
Use o Tracelog para configurar uma sessão de rastreamento do Agente Global. O comando mais simples é o seguinte:
tracelog -start GlobalLogger
Para obter instruções completas, incluindo parâmetros para configurar a sessão de rastreamento do Agente Global, consulte Sintaxe de comando tracelog e Sessão de rastreamento de agente global.
Para obter um exemplo, consulte Exemplo 13: criando uma sessão de agente global.
Esse comando cria e configura a sessão de rastreamento, mas a sessão não é iniciada até que você reinicie o sistema (etapa 5).
Na subchave HKLM\System\CurrentControlSet\Control\WMI\GlobalLogger , adicione uma subchave chamada para o GUID de controle do provedor de rastreamento. No Windows Vista e versões posteriores do Windows, o GUID de controle deve estar entre chaves ( {} ).
O comando tracelog -start GlobalLogger adiciona a subchave GlobalLogger ao registro. A subchave ControlGUID estabelece o driver como um provedor de rastreamento para a sessão de rastreamento do Agente Global.
Por exemplo, para configurar o driver de exemplo Tracedrv para fazer logon na sessão de rastreamento do Agente Global em um computador que executa o Windows XP, adicione uma subchave chamada para o GUID do controle Tracedrv, d58c126f-b309-11d1-969e-0000f875a5bc: HKLM\SYSTEM\CurrentControlSet\Control\WMI\GlobalLogger\d58c126f-b309-11d1-969e-0000f875a5bc.
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.
Para configurar o provedor de rastreamento, adicione as seguintes entradas do Registro à subchave ControlGUID . Essas entradas são opcionais e seus valores são definidos pelo driver.
Nome da entrada Tipo de dados Descrição Sinalizadores
REG_DWORD
Especifica os sinalizadores de rastreamento para o provedor.
O significado dos sinalizadores é definido independentemente por cada provedor de rastreamento. Normalmente, os sinalizadores representam níveis de relatórios cada vez mais detalhados.
Level
REG_DWORD
Especifica o nível de rastreamento para o provedor.
O significado do valor level é definido independentemente por cada provedor de rastreamento. Normalmente, o nível de rastreamento representa a gravidade do evento (informações, aviso ou erro).
Observe que o nome da entrada Flags é plural e o nome da entrada level é singular.
- Reinicie o sistema. Isso inicia a sessão de rastreamento do Agente Global.
Após a conclusão do teste, exclua a subchave ControlGUID ou defina o valor da entrada Iniciar na subchave GlobalLogger como 0. Se você não fizer isso, a sessão do Agente Global será executada e o driver fará logon nela sempre que você reiniciar o sistema.
Comentários
Quando WPP_GLOBALLOGGER está presente, o WPP adiciona código que lê o registro e determina se a sessão do Agente Global está em execução e se o driver está habilitado para rastreamento para a sessão do Agente Global. Esse código assume o lugar da notificação de habilitação que o driver receberia de uma sessão de rastreamento padrão.
Além disso, como a sessão do Agente Global não fornece notificação de retorno de chamada, o Windows pressupõe que ocorreu um retorno de chamada e continua de acordo.
As definições do WPP geram apenas uma pequena quantidade de código, portanto, não é necessário removê-las do código após o teste.