Udostępnij za pośrednictwem


Wykonywanie zapytań dotyczących dziennika zdarzeń systemowych pod kątem zdarzeń błędu sprzętowego

Nazwa dostawcy, który rejestruje zdarzenia błędu sprzętu, to Microsoft-Windows-WHEA-Logger.

Ten dostawca jest przeznaczony dla użytkowników w scenariuszach na komputerze stacjonarnym. Zawiera on czytelny dla człowieka komunikat z głównymi szczegółami zdarzenia, dzięki czemu użytkownik może uzyskać podstawowe pojęcie o tym, co się stało.

Poniższy przykład kodu pokazuje, jak wykonać zapytanie dotyczące dziennika zdarzeń systemowych w celu pobrania wszelkich zdarzeń błędów sprzętowych, które zostały wcześniej zarejestrowane przez architekturę błędów sprzętu systemu Windows (WHEA).

// Function to query the event log for hardware error events
VOID QueryHwErrorEvents(VOID) {

  EVT_HANDLE QueryHandle;
  EVT_HANDLE EventHandle;
  ULONG Returned;

  // Obtain a query handle to the system event log
  QueryHandle =
    EvtQuery(
      NULL, 
      L"System", 
      L"*[System/Provider[@Name=\"Microsoft-Windows-WHEA-Logger\"]]",
      EvtQueryChannelPath | EvtQueryForwardDirection
      );

  // Check result
  if (QueryHandle != NULL) {

    // Get the next hardware error event
    while (EvtNext(
             QueryHandle,
             1,
             &EventHandle,
             -1,
             0,
             &Returned
             )) {

      // Process the hardware error event
      ProcessHwErrorEvent(EventHandle);

      // Close the event handle
      EvtClose(EventHandle);
    }

    // Close the query handle
    EvtClose(QueryHandle);
  }
}

Notatka

Wszystkie funkcje Evt_Xxx_ i typy danych EVT_XXX, które zostały użyte w poprzednich przykładach, są udokumentowane w sekcji Dziennik zdarzeń systemu Windows w dokumentacji zestawu Microsoft Windows SDK.