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.