Condividi tramite


Uso di WHEA in Windows 10

In Windows 10 versione 2004, Windows Hardware Error Architecture (WHEA) include una nuova interfaccia (v2). Questa pagina descrive come eseguire la registrazione come origine degli errori e segnalare gli errori.

Aggiunta di un'origine errore

Per eseguire la registrazione con WHEA come origine di errore usando WHEA v2, il driver deve eseguire le operazioni seguenti:

  1. Specificare una configurazione per il driver di dispositivo creando un'istanza di una struttura di WHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER, fornendo puntatori alle funzioni di callback degli eventi WHEA_ERROR_SOURCE_INITIALIZE_DEVICE_DRIVER e WHEA_ERROR_SOURCE_UNINITIALIZE_DEVICE_DRIVER.

  2. Chiamare WheaAddErrorSourceDeviceDriver, fornendo la struttura di configurazione. In genere, il driver chiama questa routine da DriverEntry.

    Per rimuovere un'origine di errore in un secondo momento, chiamare WheaRemoveErrorSourceDeviceDriver.

  3. WHEA chiama la funzione di callback degli eventi WHEA_ERROR_SOURCE_INITIALIZE_DEVICE_DRIVER del driver quando l'origine degli errori è pronta per segnalare gli errori. Il driver riceve errorSourceId come parametro per il callback.

Segnalazione di un errore

Per segnalare un errore, seguire questa procedura in sequenza contemporaneamente:

  1. Chiamare WheaCreateHwErrorReportDeviceDriver, specificando ErrorSourceId e, facoltativamente, un DeviceObject per il driver. La routine restituisce un handle all'errore in corso.

  2. Per aggiungere dati all'errore, chiamare WheaAddHwErrorReportSectionDeviceDriver, specificando l'handle di errore. Questa funzione aggiunge una singola sezione al report degli errori e configura un buffer di dati fornito dal driver. Il driver può chiamare questa routine fino a MaxSectionsPerReport volte come specificato in WHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER.

    Facoltativamente, il driver può chiamare WheaHwErrorReportSetSeverityDeviceDriver per impostare la gravità dell'errore del pacchetto e delle sezioni. Vedere anche WheaHwErrorReportSetSectionNameDeviceDriver, che è una funzione helper per aggiornare il campo FRUText della struttura WHEA_ERROR_RECORD_edizione Standard CTION_DESCRIPTOR.

  3. Copiare i dati degli errori nel set di buffer.

  4. Chiamare WheaHwErrorReportSubmitDeviceDriver, specificando di nuovo l'handle di errore. Dopo questa chiamata, i buffer nei set di buffer non sono disponibili e l'handle non è valido.

  5. Se si verifica un errore o l'errore non è più valido, il driver può facoltativamente chiamare WheaHwErrorReportAbandonDeviceDriver. In questo caso, nessun report viene inviato a WHEA.

Il driver deve chiamare WheaHwErrorReportSubmitDeviceDriver o WheaHwErrorReportAbandonDeviceDriver in ogni handle creato da WheaCreateHwErrorReportDeviceDriver. In caso contrario, WheaRemoveErrorSourceDeviceDriver potrebbe restituire STATUS_RESOURCE_IN_U edizione Standard.