Solución de problemas de aplicaciones cliente WMI
WMI contiene un conjunto de clases para solucionar problemas de aplicaciones cliente que usan proveedores de WMI. Las clases de eventos de solución de problemas se emparejan con clases de eventos de WMI, de modo que puede realizar un seguimiento de la ejecución de la aplicación mediante un registro de eventos de solución de problemas capturados.
La lista siguiente contiene ejemplos de clases de eventos de solución de problemas:
Msft_WmiProvider_ExecMethodAsyncEvent_Pre
Se genera antes de que WMI llame a IWbemServices::ExecMethodAsync() en el proveedor.
Msft_WmiProvider_ExecMethodAsyncEvent_Post
Se genera después de que WMI llame a IWbemServices::ExecMethodAsync() en el proveedor.
En el procedimiento siguiente se muestra cómo solucionar problemas de ejecución de la aplicación.
Para configurar la solución de problemas de WMI
- Cree y compile un archivo MOF para usar el consumidor de eventos de registro de WMI.
- Ejecute la aplicación cliente.
- Vea el archivo de registro de solución de problemas de todos los eventos de error y operaciones del proveedor y analice el registro para diagnosticar los problemas de cliente que se produzcan.
Otro enfoque de solución de problemas consiste en ver la lista de proveedores que se encuentran actualmente en la memoria caché del equipo mediante la enumeración de MSFT_Providers en el espacio de nombres root\cimv2. Hay métodos en esta clase que permiten cargar y descargar proveedores con fines de depuración o configuración.
En el ejemplo de código siguiente se usa el consumidor de eventos de registro de WMI para capturar todos los eventos de la clase de eventos principal, capturando así todos los eventos de operaciones del proveedor.
#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 ;
} ;
Si los mensajes de error indican un error de carga del proveedor, use MSFT_WmiProvider_LoadOperationFailureEvent para identificar qué proveedor causó el error.
Temas relacionados