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:
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.
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.
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:
Chame WheaCreateHwErrorReportDeviceDriver, fornecendo o ErrorSourceId e, opcionalmente, um DeviceObject para o driver. A rotina retorna um identificador para o erro em andamento.
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.
Copie os dados de erro para o conjunto de buffers.
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.
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.