Compartilhar via


Usando o WHEA no Windows 10

No Windows 10, versão 2004, Windows Hardware Error Architecture (WHEA) inclui uma nova interface (v2). Esta página descreve como registrar como uma fonte de erro e relatar erros.

Adicionando uma fonte de erro

Para registrar com WHEA como uma fonte de erro usando WHEA v2, o driver deve fazer o seguinte:

  1. Especifique uma configuração para o driver de dispositivo instanciando uma estrutura WHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER, fornecendo ponteiros para WHEA_ERROR_SOURCE_INITIALIZE_DEVICE_DRIVER e WHEA_ERROR_SOURCE_UNINITIALIZE_DEVICE_DRIVER funções de retorno de chamada de eventos.

  2. Chame WheaAddErrorSourceDeviceDriver, fornecendo a estrutura de configuração. Normalmente, o driver chama essa rotina de DriverEntry.

    Para remover uma fonte de erro posteriormente, chame WheaRemoveErrorSourceDeviceDriver.

  3. O WHEA chama a função de retorno de chamada de eventos WHEA_ERROR_SOURCE_INITIALIZE_DEVICE_DRIVER do driver quando a fonte de erro está pronta para relatar erros. O driver recebe um ErrorSourceId como um parâmetro para o retorno de chamada.

Relatando um erro

Para relatar um erro, execute as seguintes etapas em sequência ao mesmo tempo:

  1. Chame WheaCreateHwErrorReportDeviceDriver, fornecendo o ErrorSourceId e, opcionalmente, um DeviceObject para o driver. A rotina retorna um identificador para o erro em andamento.

  2. Para adicionar dados ao erro, chame WheaAddHwErrorReportSectionDeviceDriver, fornecendo o identificador de erro. Essa função adiciona uma única seção ao relatório de erros e configura um buffer de dados fornecido pelo driver. O driver pode chamar essa rotina até MaxSectionsPerReport vezes, conforme especificado em WHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER.

    Opcionalmente, o driver pode chamar WheaHwErrorReportSetSeverityDeviceDriver para definir a gravidade do erro do pacote e seções. Consulte também WheaHwErrorReportSetSectionNameDeviceDriver, que é uma função auxiliar para atualizar o campo FRUText da estrutura WHEA_ERROR_RECORD_SECTION_DESCRIPTOR.

  3. Copie os dados de erro para o conjunto de buffers.

  4. Chame WheaHwErrorReportSubmitDeviceDriver, fornecendo novamente o identificador de erro. Após essa chamada, os buffers nos conjuntos de buffers não estão disponíveis e o identificador é inválido.

  5. Se ocorrer um erro ou o erro não for mais válido, o driver pode opcionalmente chamar WheaHwErrorReportAbandonDeviceDriver. Neste caso, nenhum relatório é submetido à WHEA.

O driver deve chamar WheaHwErrorReportSubmitDeviceDriver ou WheaHwErrorReportAbandonDeviceDriver em cada identificador criado por WheaCreateHwErrorReportDeviceDriver. Caso contrário, WheaRemoveErrorSourceDeviceDriver pode retornar STATUS_RESOURCE_IN_USE.