Solução de problemas de aplicativos cliente do WMI
O WMI contém um conjunto de classes para aplicativos cliente de solução de problemas que usam provedores WMI. As classes de evento de solução de problemas são acopladas a classes de evento WMI, de modo que você possa acompanhar a execução do aplicativo usando um log de eventos de solução de problemas capturados.
A lista a seguir contém exemplos de classes de evento de solução de problemas:
Msft_WmiProvider_ExecMethodAsyncEvent_Pre
Gerado antes que o WMI chame IWbemServices::ExecMethodAsync() no provedor.
Msft_WmiProvider_ExecMethodAsyncEvent_Post
Gerado depois que o WMI chama IWbemServices::ExecMethodAsync() no provedor.
O procedimento a seguir mostra como solucionar problemas de execução do aplicativo.
Para configurar a solução de problemas do WMI
- Crie e compile um arquivo MOF para usar o consumidor de evento de registro em log WMI.
- Execute seu aplicativo cliente.
- Exiba o arquivo de log de solução de problemas para todos os eventos de operação e falha do provedor e analise o log para diagnosticar os problemas do cliente que você está encontrando.
Outra abordagem de solução de problemas é exibir a lista de provedores atualmente no cache do computador, enumerando MSFT_Providers no namespace de root\cimv2. Há métodos nessa classe que permitem carregar e descarregar provedores para fins de depuração ou configuração.
O exemplo de código a seguir usa o consumidor de eventos de registro em log WMI para capturar todos os eventos da classe de evento pai, capturando, assim, todos os eventos de operação do provedor.
#pragma autorecover
#pragma namespace("\\\\.\\root\\subscription")
instance of __EventFilter as $Filter
{
Name = "ProviderOperationEvents" ;
EventNamespace = "root\\cimv2" ;
Query = "SELECT * FROM MSFT_WmiProvider_OperationEvent" ;
QueryLanguage = "WQL" ;
} ;
Instance of LogFileEventConsumer as $Consumer
{
Name = "ProviderOperationEvents" ;
FileName = "C:\\test.txt" ;
Text = "Operation - %__TEXT%" ;
} ;
instance of __FilterToConsumerBinding
{
Filter = $Filter ;
Consumer = $Consumer ;
MaintainSecurityContext = TRUE ;
} ;
Quando mensagens de erro indicarem falha na carga do provedor, use MSFT_WmiProvider_LoadOperationFailureEvent para identificar qual provedor causou a falha.
Tópicos relacionados