Rozwiązywanie problemów z aplikacjami klienckimi usługi WMI
Usługa WMI zawiera zestaw klas do rozwiązywania problemów aplikacji klienckich korzystających z dostawców usługi WMI. Klasy zdarzeń rozwiązywania problemów są powiązane z klasami zdarzeń usługi WMI, dzięki czemu można śledzić wykonywanie aplikacji przy użyciu dziennika przechwyconych zdarzeń rozwiązywania problemów.
Poniższa lista zawiera przykłady rozwiązywania problemów z klasami zdarzeń:
Msft_WmiProvider_ExecMethodAsyncEvent_Pre
Zgłoszone przed wywołaniami usługi WMI dostawcy IWbemServices::ExecMethodAsync().
Msft_WmiProvider_ExecMethodAsyncEvent_Post
Wywoływane po wykonaniu usług WMI IWbemServices::ExecMethodAsync() na dostawcy.
Poniższa procedura przedstawia sposób rozwiązywania problemów z wykonywaniem aplikacji.
Aby skonfigurować rozwiązywanie problemów z WMI
- Utwórz i skompiluj plik MOF, aby użyć odbiorcy zdarzeń rejestrowania usługi WMI.
- Uruchom aplikację kliencką.
- Wyświetl plik dziennika rozwiązywania problemów dla wszystkich zdarzeń operacji i awarii dostawcy oraz przeanalizuj dziennik, aby zdiagnozować napotkane problemy klienta.
Innym podejściem do rozwiązywania problemów jest wyświetlenie listy dostawców aktualnie obecnych w pamięci podręcznej komputera, poprzez wyliczenie MSFT_Providers w przestrzeni nazw root\cimv2. Istnieją metody w tej klasie, które umożliwiają ładowanie i usuwanie dostawców na potrzeby debugowania lub konfigurowania.
Poniższy przykład kodu używa odbiorcy zdarzeń rejestrowania usługi WMI do przechwytywania wszystkich zdarzeń klasy zdarzeń nadrzędnych, co umożliwia przechwytywanie wszystkich zdarzeń operacyjnych dostawcy.
#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 ;
} ;
Gdy komunikaty o błędach wskazują błąd ładowania dostawcy, użyj MSFT_WmiProvider_LoadOperationFailureEvent, aby zidentyfikować, który dostawca spowodował błąd.
Tematy pokrewne