Verwenden von WHEA auf Windows 10

In Windows 10 Version 2004 enthält die Windows Hardware Error Architecture (WHEA) eine neue Schnittstelle (v2). Auf dieser Seite wird beschrieben, wie Sie sich als Fehlerquelle registrieren und Fehler melden.

Hinzufügen einer Fehlerquelle

Um sich bei WHEA als Fehlerquelle mit WHEA v2 zu registrieren, sollte der Treiber die folgenden Schritte ausführen:

  1. Geben Sie eine Konfiguration für Ihren Gerätetreiber an, indem Sie eine WHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER-Struktur instanziieren und Zeiger auf WHEA_ERROR_SOURCE_INITIALIZE_DEVICE_DRIVER und WHEA_ERROR_SOURCE_UNINITIALIZE_DEVICE_DRIVER Ereignisrückruffunktionen bereitstellen.

  2. Rufen Sie WheaAddErrorSourceDeviceDriver auf, und stellen Sie die Konfigurationsstruktur bereit. In der Regel ruft der Treiber diese Routine von DriverEntry auf.

    Um eine Fehlerquelle zu einem späteren Zeitpunkt zu entfernen, rufen Sie WheaRemoveErrorSourceDeviceDriver auf.

  3. WHEA ruft die WHEA_ERROR_SOURCE_INITIALIZE_DEVICE_DRIVER Ereignisrückruffunktion des Treibers auf, wenn die Fehlerquelle bereit ist, Fehler zu melden. Der Treiber empfängt eine ErrorSourceId als Parameter für den Rückruf.

Melden eines Fehlers

Um einen Fehler zu melden, führen Sie gleichzeitig die folgenden Schritte nacheinander aus:

  1. Rufen Sie WheaCreateHwErrorReportDeviceDriver auf, und geben Sie die ErrorSourceId und optional ein DeviceObject für den Treiber an. Die Routine gibt ein Handle an den In Bearbeitungsfehler zurück.

  2. Um dem Fehler Daten hinzuzufügen, rufen Sie WheaAddHwErrorReportSectionDeviceDriver auf, und geben Sie das Fehlerhandle an. Diese Funktion fügt dem Fehlerbericht einen einzelnen Abschnitt hinzu und konfiguriert einen vom Treiber bereitgestellten Datenpuffer. Der Treiber kann diese Routine bis zu MaxSectionsPerReport-Zeiten aufrufen, wie in WHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER angegeben.

    Optional kann der Treiber WheaHwErrorReportSetSeverityDeviceDriver aufrufen, um den Fehlerschweregrad des Pakets und der Abschnitte festzulegen. Siehe auch WheaHwErrorReportSetSectionNameDeviceDriver, eine Hilfsfunktion zum Aktualisieren des FRUText-Felds der WHEA_ERROR_RECORD_SECTION_DESCRIPTOR-Struktur .

  3. Kopieren Sie Fehlerdaten in den Puffersatz.

  4. Rufen Sie WheaHwErrorReportSubmitDeviceDriver auf, und geben Sie erneut das Fehlerhandle an. Nach diesem Aufruf sind Puffer in den Puffersätzen nicht mehr verfügbar, und das Handle ist ungültig.

  5. Wenn ein Fehler auftritt oder der Fehler nicht mehr gültig ist, kann der Treiber optional WheaHwErrorReportAbandonDeviceDriver aufrufen. In diesem Fall wird kein Bericht an WHEA übermittelt.

Der Treiber muss entweder WheaHwErrorReportSubmitDeviceDriver oder WheaHwErrorReportAbandonDeviceDriver für jedes von WheaCreateHwErrorReportDeviceDriver erstellte Handle aufrufen. Andernfalls gibt WheaRemoveErrorSourceDeviceDriver möglicherweise STATUS_RESOURCE_IN_USE zurück.