Устранение неполадок клиентских приложений WMI
WMI содержит набор классов для устранения неполадок клиентских приложений, использующих поставщики WMI. Классы событий для устранения неполадок связаны с классами событий WMI, поэтому вы можете отслеживать выполнение приложения с помощью журнала записанных событий устранения неполадок.
В следующем списке приведены примеры устранения неполадок с классами событий:
Msft_WmiProvider_ExecMethodAsyncEvent_Pre
Вызывается перед вызовом WMI IWbemServices::ExecMethodAsync() в поставщике.
Msft_WmiProvider_ExecMethodAsyncEvent_Post
Возникает после вызова WMI IWbemServices::ExecMethodAsync() в поставщике.
В следующей процедуре показано, как устранить неполадки при выполнении приложения.
Настройка устранения неполадок WMI
- Создайте и скомпилируйте MOF-файл для использования потребителя событий ведения журнала WMI.
- Запустите клиентское приложение.
- Просмотрите файл журнала устранения неполадок для всех операций поставщика и событий сбоя, а также проанализируйте журнал для диагностики проблем клиента, с которыми вы столкнулись.
Другой подход к устранению неполадок заключается в просмотре списка поставщиков, которые в настоящее время находятся в кэше компьютера, путем перечисления MSFT_Providers в пространстве имен root\cimv2 . В этом классе есть методы, которые позволяют загружать и выгружать поставщиков для отладки или настройки.
В следующем примере кода используется объект-получатель событий ведения журнала WMI для записи всех событий родительского класса событий, таким образом захватывая все события операций поставщика.
#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 ;
} ;
Если сообщения об ошибках указывают на сбой загрузки поставщика, используйте MSFT_WmiProvider_LoadOperationFailureEvent , чтобы определить, какой поставщик вызвал ошибку.
Связанные темы