{"id":27867762,"url":"https://github.com/ralish/decodewhearecord","last_synced_at":"2025-05-04T22:53:28.574Z","repository":{"id":70963023,"uuid":"392566814","full_name":"ralish/DecodeWheaRecord","owner":"ralish","description":"Decode hex-encoded Windows Hardware Event Architecture (WHEA) records","archived":false,"fork":false,"pushed_at":"2025-01-24T07:03:38.000Z","size":377,"stargazers_count":16,"open_issues_count":1,"forks_count":3,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-01-24T08:18:24.595Z","etag":null,"topics":["cper","uefi","whea","windows"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ralish.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-04T05:53:55.000Z","updated_at":"2025-01-24T07:03:41.000Z","dependencies_parsed_at":"2024-12-15T21:24:44.541Z","dependency_job_id":"b856737d-33dd-47f4-a59b-b16a5118f496","html_url":"https://github.com/ralish/DecodeWheaRecord","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ralish%2FDecodeWheaRecord","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ralish%2FDecodeWheaRecord/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ralish%2FDecodeWheaRecord/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ralish%2FDecodeWheaRecord/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ralish","download_url":"https://codeload.github.com/ralish/DecodeWheaRecord/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252411818,"owners_count":21743604,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cper","uefi","whea","windows"],"created_at":"2025-05-04T22:53:28.102Z","updated_at":"2025-05-04T22:53:28.567Z","avatar_url":"https://github.com/ralish.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"DecodeWheaRecord\n================\n\n![GitHub Release](https://img.shields.io/github/v/release/ralish/DecodeWheaRecord?include_prereleases)\n[![azure devops](https://dev.azure.com/nexiom/DecodeWheaRecord/_apis/build/status/DecodeWheaRecord)](https://dev.azure.com/nexiom/DecodeWheaRecord/_build/latest?definitionId=1)\n[![license](https://img.shields.io/github/license/ralish/DecodeWheaRecord)](https://choosealicense.com/licenses/mit/)\n\nA utility to decode *Windows Hardware Error Architecture (WHEA)* records.\n\n- [Overview](#overview)\n- [Requirements](#requirements)\n- [Usage](#usage)\n- [Support status](#support-status)\n  - [Errors](#errors)\n  - [Events](#events)\n- [Technical details](#technical-details)\n  - [Architecture](#architecture)\n  - [Error records](#error-records)\n  - [Event records](#event-records)\n- [Glossary](#glossary)\n  - [Buses](#buses)\n  - [Memory](#memory)\n  - [Microsoft](#microsoft)\n  - [Processors](#processors)\n  - [Specifications](#specifications)\n  - [Miscellaneous](#miscellaneous)\n- [License](#license)\n\nOverview\n--------\n\n[Windows Hardware Error Architecture](https://learn.microsoft.com/en-us/windows-hardware/drivers/whea/) provides the Windows infrastructure for hardware error reporting. First introduced with Windows Server 2008 and Windows Vista SP1, it has been part of every Windows release since.\n\nWhile the the records WHEA emits can be seen through its event log channels, they are only viewable in their raw binary format which Windows has no support for decoding. This utility takes these Base64 encoded binary records and decodes them into a human-readable JSON representation.\n\nRequirements\n------------\n\n- .NET Framework 4.7.2 (or newer)  \n  *Built-in since Windows 10 1803 and Server 2019*\n\nUsage\n-----\n\nWHEA errors and events are logged by the `Microsoft-Windows-Kernel-WHEA` provider to the following event log channels:\n\n- `Microsoft-Windows-Kernel-WHEA/Errors`\n- `Microsoft-Windows-Kernel-WHEA/Operational`\n\nFor the unfamiliar, you can find these event log channels in *Event Viewer* by expanding the *Applications and Services Logs -\u003e Microsoft -\u003e Windows -\u003e Kernel-WHEA* tree.\n\nTo decode an event you need to retrieve the value from its `RawData` field (visible in the *Details* tab). Provide this value as the sole argument to the utility:\n\n```plain\nDecodeWheaRecord.exe 57684C67010000002200000000000000504349203100008002000000020000000100\n{\n  \"Header\": {\n    \"Signature\": \"WhLg\",\n    \"Version\": 1,\n    \"Length\": 34,\n    \"Type\": \"Informational\",\n    \"OwnerTag\": \"PCI\",\n    \"Id\": \"eDpcEnabled\",\n    \"Flags\": \"LogInternalEtw\",\n    \"PayloadLength\": 2\n  },\n  \"Entry\": {\n    \"eDPCEnabled\": true,\n    \"eDPCRecovEnabled\": false\n  }\n}\n```\n\nSupport status\n--------------\n\nAll errors and events supported by Windows up to *Windows 11, version 24H2* and *Windows Server 2025* are either fully or partially supported.\n\n### Errors\n\n| Name                             | Implemented?         | GUID                                   | WHEA structure                          | UEFI section | MSFT documentation |\n| -------------------------------- | -------------------- | -------------------------------------- | --------------------------------------- | ------------ | ------------------ |\n| ARM Processor Error              | Complete             | `e19e3d16-bc11-11e4-9caa-c2051d5d46b0` | `WHEA_ARM_PROCESSOR_ERROR_SECTION`      | N.2.4.4      | Undocumented       |\n| ARM RAS Node Error               | Complete             | `e3ebf4a2-df50-4708-b2d7-0b29ec2f7aa9` | `WHEA_ARM_RAS_NODE_SECTION`             | N/A          | Undocumented       |\n| ARM SEA Exception                | Complete             | `f5fe48a6-84ce-4c1e-aa64-20c9a53099f1` | `WHEA_SEA_SECTION`                      | N/A          | [Partial](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/ns-ntddk-whea_sea_section) |\n| ARM SEI Exception                | Complete             | `f2a4a152-9c6d-4020-aecf-7695b389251b` | `WHEA_SEI_SECTION`                      | N/A          | [Partial](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/ns-ntddk-whea_sei_section) |\n| Error Recovery Information       | Complete             | `c34832a1-02c3-4c52-a9f1-9f1d5d7723fc` | `WHEA_ERROR_RECOVERY_INFO_SECTION`      | N/A          | Undocumented       |\n| Firmware Error Record Reference  | Complete\u003csup\u003e1\u003c/sup\u003e | `81212a96-09ed-4996-9471-8d729c8e69ed` | `WHEA_FIRMWARE_ERROR_RECORD_REFERENCE`  | N.2.10       | [Yes](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/ns-ntddk-_whea_firmware_error_record_reference) |\n| Generic Error                    | Complete             | `e71254e8-c1b9-4940-ab76-909703a4320f` | `WHEA_GENERIC_ERROR`                    | N/A          | [Yes](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/ns-ntddk-_whea_generic_error) |\n| Generic Processor Error          | Complete             | `9876ccad-47b4-4bdb-b65e-16f193c4f3db` | `WHEA_PROCESSOR_GENERIC_ERROR_SECTION`  | N.2.4.1      | [Yes](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/ns-ntddk-_whea_processor_generic_error_section) |\n| Hardware Error Packet (v1)       | Partial              | `e71254e9-c1b9-4940-ab76-909703a4320f` | `WHEA_ERROR_PACKET_V1`                  | N/A          | [Yes](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/ns-ntddk-_whea_error_packet_v1) |\n| Hardware Error Packet (v2)       | Partial              | `e71254e9-c1b9-4940-ab76-909703a4320f` | `WHEA_ERROR_PACKET_V2`                  | N/A          | [Partial](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/ns-ntddk-_whea_error_packet_v2) |\n| IA32 / AMD64 Machine Check Error | Partial              | `8a1e1d01-42f9-4557-9c33-565e5cc3f7e8` | `WHEA_XPF_MCA_SECTION`                  | N/A          | [Partial](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/ns-ntddk-_whea_xpf_mca_section) |\n| IA32 / AMD64 Processor Error     | Complete             | `dc3ea0b0-a144-4797-b95b-53fa242b6e1d` | `WHEA_XPF_PROCESSOR_ERROR_SECTION`      | N.2.4.2      | [Yes](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/ns-ntddk-_whea_xpf_processor_error_section) |\n| Memory Correctable Error Summary | Complete             | `0e36c93e-ca15-4a83-ba8a-cbe80f7f0017` | `WHEA_MEMORY_CORRECTABLE_ERROR_SECTION` | N/A          | [Partial](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/ns-ntddk-whea_memory_correctable_error_section) |\n| Memory Error                     | Complete             | `a5bc1114-6f64-4ede-b863-3e83ed7c83b1` | `WHEA_MEMORY_ERROR_SECTION`             | N.2.5        | [Yes](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/ns-ntddk-_whea_memory_error_section) |\n| Memory Error (Intel extension)   | Complete             | `e16edb28-6113-4263-a41d-e53f8de78751` | `WHEA_MEMORY_ERROR_EXT_SECTION_INTEL`   | N/A          | Undocumented       |\n| MSR Dump                         | Partial              | `1c15b445-9b06-4667-ac25-33c056b88803` | `WHEA_MSR_DUMP_SECTION`                 | N/A          | [Partial](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/ns-ntddk-whea_msr_dump_section) |\n| NMI Error                        | Complete             | `e71254e7-c1b9-4940-ab76-909703a4320f` | `WHEA_NMI_ERROR_SECTION`                | N/A          | [Yes](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/ns-ntddk-_whea_nmi_error_section) |\n| PCI / PCI-X Bus Error            | Complete             | `c5753963-3b84-4095-bf78-eddad3f9c9dd` | `WHEA_PCIXBUS_ERROR_SECTION`            | N.2.8        | [Yes](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/ns-ntddk-_whea_pcixbus_error_section) |\n| PCI / PCI-X Device Error         | Complete             | `eb5e4685-ca66-4769-b6a2-26068b001326` | `WHEA_PCIXDEVICE_ERROR_SECTION`         | M.2.9        | [Yes](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/ns-ntddk-_whea_pcixdevice_error_section) |\n| PCI Express DPC Capability       | Complete             | `ec49534b-30e7-4358-972f-eca6958fae3b` | `PCI_EXPRESS_DPC_CAPABILITY`            | N/A          | [Partial](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/ns-ntddk-pci_express_dpc_capability) |\n| PCI Express Error                | Complete             | `d995e954-bbc1-430f-ad91-b44dcb3c6f35` | `WHEA_PCIEXPRESS_ERROR_SECTION`         | N.2.7        | [Yes](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/ns-ntddk-_whea_pciexpress_error_section) |\n| PCI Recovery                     | Complete             | `dd060800-f6e1-4204-ac27-c4bca9568402` | `WHEA_PCI_RECOVERY_SECTION`             | N/A          | [Partial](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/ns-ntddk-whea_pci_recovery_section) |\n| PCIe Correctable Error Summary   | Partial              | `e96eca99-53e2-4f52-9be7-d2dbe9508ed0` | `WHEA_PCIE_CORRECTABLE_ERROR_SECTION`   | N/A          | [Partial](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/ns-ntddk-whea_pcie_correctable_error_section_header) |\n| Persistent Memory Error          | Partial              | `81687003-dbfd-4728-9ffd-f0904f97597d` | `WHEA_PMEM_ERROR_SECTION`               | N/A          | [Partial](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/ns-ntddk-whea_pmem_error_section) |\n| Project Mu Telemetry             | Complete             | `85183a8b-9c41-429c-939c-5c3c087ca280` | `MU_TELEMETRY_SECTION`                  | N/A          | Undocumented       |\n\n1. The *Firmware Error Record Reference* error typically includes additional binary data for which it acts as an encapsulating record. The format of this binary data is not defined in the UEFI specification, and both the source of the data and its format is effectively arbitrary, though typically it's from the CPU or the platform firmware. When present this utility will output this additional data in hexadecimal, but it cannot decode it as the structure of the data is not known.\n\nThe following error section types are defined in the UEFI specification but are not implemented by Windows and so not supported by this utility. They are listed here for completeness:\n\n| Name                             | GUID                                   | UEFI section |\n| -------------------------------- | -------------------------------------- | ------------ |\n| AMD IOMMU Specific DMAr Error    | `036f84e1-7f37-428c-a79e-575fdfaa84ec` | N.2.11.3     |\n| CCIX PER Log Error               | `91335ef6-ebfb-4478-a6a6-88b728cf75d7` | N.2.12       |\n| CXL Protocol Error               | `80b9efb4-52b5-4de3-a777-68784b771048` | N.2.13       |\n| DMAr Generic Error               | `5b51fef7-c79d-4434-8f1b-aa62de3e2c64` | N.2.11.1     |\n| FRU Memory Poison                | `5e4706c1-5356-48c6-930b-52f2120a4458` | N.2.15       |\n| IA64 Processor Error             | `e429faf1-3cb7-11d4-bca7-0080c73c8881` | N.2.4.3      |\n| Intel VT-d Specific DMAr Error   | `71761d37-32b2-45cd-a7d0-b0fedd93e8cf` | N.2.11.2     |\n| Memory Error 2                   | `61ec04fc-48e6-d813-25c9-8daa44750b12` | N.2.6        |\n\n### Events\n\n| Entry ID     | Symbolic name                   | Implemented? | WHEA structure                                              | Notes       |\n| ------------ | ------------------------------- | ------------ | ----------------------------------------------------------- | ----------- |\n| `0x80000001` | `CmcPollingTimeout`             | Complete     | `WHEAP_CMC_POLLING_TIMEOUT_EVENT`                           |             |\n| `0x80000002` | `WheaInit`                      | Complete     | `WHEAP_INIT_EVENT`                                          |             |\n| `0x80000003` | `CmcSwitchToPolling`            | Complete     | `WHEAP_CMC_SWITCH_TO_POLLING_EVENT`                         | Empty       |\n| `0x80000004` | `DroppedCorrectedError`         | Complete     | `WHEAP_DROPPED_CORRECTED_ERROR_EVENT`                       |             |\n| `0x80000005` | `StartedReportHwError`          | Complete     | `WHEAP_STARTED_REPORT_HW_ERROR`                             | SEL         |\n| `0x80000006` | `PFAMemoryOfflined`             | Complete     | `WHEAP_PFA_MEMORY_OFFLINED`                                 |             |\n| `0x80000007` | `PFAMemoryRemoveMonitor`        | Complete     | `WHEAP_PFA_MEMORY_REMOVE_MONITOR`                           |             |\n| `0x80000008` | `PFAMemoryPolicy`               | Complete     | `WHEAP_PFA_MEMORY_POLICY`                                   |             |\n| `0x80000009` | `PshedInjectError`              | Complete     | `WHEAP_PSHED_INJECT_ERROR`                                  |             |\n| `0x8000000a` | `OscCapabilities`               | Complete     | `WHEAP_OSC_IMPLEMENTED`                                     |             |\n| `0x8000000b` | `PshedPluginRegister`           | Complete     | `WHEAP_PSHED_PLUGIN_REGISTER`                               |             |\n| `0x8000000c` | `AddRemoveErrorSource`          | Complete     | `WHEAP_ADD_REMOVE_ERROR_SOURCE_EVENT`                       |             |\n| `0x8000000d` | `WorkQueueItem`                 | Unsupported  | Unknown                                                     |             |\n| `0x8000000e` | `AttemptErrorRecovery`          | Complete     | `WHEAP_ATTEMPT_RECOVERY_EVENT`                              |             |\n| `0x8000000f` | `McaFoundErrorInBank`           | Partial      | `WHEAP_FOUND_ERROR_IN_BANK_EVENT`                           |             |\n| `0x80000010` | `McaStuckErrorCheck`            | Complete     | `WHEAP_STUCK_ERROR_EVENT`                                   |             |\n| `0x80000011` | `McaErrorCleared`               | Complete     | `WHEAP_ERROR_CLEARED_EVENT`                                 |             |\n| `0x80000012` | `ClearedPoison`                 | Complete     | `WHEAP_CLEARED_POISON_EVENT`                                |             |\n| `0x80000013` | `ProcessEINJ`                   | Complete     | `WHEAP_PROCESS_EINJ_EVENT`                                  |             |\n| `0x80000014` | `ProcessHEST`                   | Complete     | `WHEAP_PROCESS_HEST_EVENT`                                  |             |\n| `0x80000015` | `CreateGenericRecord`           | Complete     | `WHEAP_CREATE_GENERIC_RECORD_EVENT`                         |             |\n| `0x80000016` | `ErrorRecord`                   | Complete     | `WHEAP_ERROR_RECORD_EVENT`                                  |             |\n| `0x80000017` | `ErrorRecordLimit`              | Unsupported  | Unknown                                                     |             |\n| `0x80000018` | `AerNotGrantedToOs`             | Complete     | `WHEAP_AER_NOT_GRANTED_TO_OS`                               | Empty       |\n| `0x80000019` | `ErrSrcArrayInvalid`            | Complete     | `WHEAP_ERR_SRC_ARRAY_INVALID_EVENT`                         |             |\n| `0x8000001a` | `AcpiTimeOut`                   | Complete     | `WHEAP_ACPI_TIMEOUT_EVENT`                                  |             |\n| `0x8000001b` | `CmciRestart`                   | Complete     | `WHEAP_CMCI_RESTART_EVENT`                                  |             |\n| `0x8000001c` | `CmciFinalRestart`              | Complete     | `WHEAP_CMCI_RESTART_EVENT`                                  |             |\n| `0x8000001d` | `EtwOverFlow`                   | Complete     | `WHEA_ETW_OVERFLOW_EVENT`                                   |             |\n| `0x8000001e` | `AzccRootBusSearchErr`          | Complete     | `WHEA_AZCC_ROOT_BUS_ERR_EVENT`                              |             |\n| `0x8000001f` | `AzccRootBusList`               | Complete     | `WHEA_AZCC_ROOT_BUS_LIST_EVENT`                             |             |\n| `0x80000020` | `ErrSrcInvalid`                 | Complete     | `WHEAP_ERR_SRC_INVALID_EVENT`                               |             |\n| `0x80000021` | `GenericErrMemMap`              | Complete     | `WHEAP_GENERIC_ERR_MEM_MAP_EVENT`                           |             |\n| `0x80000022` | `PshedCallbackCollision`        | Complete     | `WHEAP_PSHED_PLUGIN_CALLBACK_COLLISION`                     |             |\n| `0x80000023` | `SELBugCheckProgress`           | Complete     | `WHEA_SEL_BUGCHECK_PROGRESS`                                | SEL         |\n| `0x80000024` | `PshedPluginLoad`               | Complete     | `WHEA_PSHED_PLUGIN_LOAD_EVENT`                              |             |\n| `0x80000025` | `PshedPluginUnload`             | Complete     | `WHEA_PSHED_PLUGIN_UNLOAD_EVENT`                            |             |\n| `0x80000026` | `PshedPluginSupported`          | Complete     | `WHEA_PSHED_PLUGIN_PLATFORM_SUPPORT_EVENT`                  |             |\n| `0x80000027` | `DeviceDriver`                  | Unsupported  | Unknown                                                     |             |\n| `0x80000028` | `CmciImplPresent`               | Complete     | `WHEAP_CMCI_IMPLEMENTED_EVENT`                              |             |\n| `0x80000029` | `CmciInitError`                 | Complete     | `WHEAP_CMCI_INITERR_EVENT`                                  |             |\n| `0x8000002a` | `SELBugCheckRecovery`           | Complete     | `WHEA_SEL_BUGCHECK_RECOVERY_STATUS_MULTIPLE_BUGCHECK_EVENT` | SEL         |\n| `0x8000002a` | `SELBugCheckRecovery`           | Complete     | `WHEA_SEL_BUGCHECK_RECOVERY_STATUS_PHASE1_EVENT`            | SEL         |\n| `0x8000002a` | `SELBugCheckRecovery`           | Complete     | `WHEA_SEL_BUGCHECK_RECOVERY_STATUS_PHASE2_EVENT`            | SEL         |\n| `0x8000002a` | `SELBugCheckRecovery`           | Complete     | `WHEA_SEL_BUGCHECK_RECOVERY_STATUS_START_EVENT`             | SEL         |\n| `0x8000002b` | `DrvErrSrcInvalid`              | Complete     | `WHEAP_DEVICE_DRV_EVENT`                                    | SEL         |\n| `0x8000002c` | `DrvHandleBusy`                 | Complete     | `WHEAP_DEVICE_DRV_EVENT`                                    | SEL         |\n| `0x8000002d` | `WheaHeartbeat`                 | Complete     | `WHEA_PSHED_PLUGIN_HEARTBEAT`                               | Empty       |\n| `0x8000002e` | `AzccRootBusPoisonSet`          | Complete     | `WHEA_AZCC_SET_POISON_EVENT`                                |             |\n| `0x8000002f` | `SELBugCheckInfo`               | Unsupported  | Unknown                                                     |             |\n| `0x80000030` | `ErrDimmInfoMismatch`           | Complete     | `WHEA_PSHED_PLUGIN_DIMM_MISMATCH`                           |             |\n| `0x80000031` | `eDpcEnabled`                   | Complete     | `WHEAP_EDPC_ENABLED_EVENT`                                  |             |\n| `0x80000032` | `PageOfflineDone`               | Complete     | `WHEA_OFFLINE_DONE_EVENT`                                   |             |\n| `0x80000033` | `PageOfflinePendMax`            | Complete     | `WHEAP_OFFLINE_PENDING_MAX`                                 | Empty       |\n| `0x80000034` | `BadPageLimitReached`           | Complete     | `WHEAP_BAD_PAGE_LIMIT_REACHED`                              | Empty       |\n| `0x80000035` | `SrarDetail`                    | Partial      | `WHEA_SRAR_DETAIL_EVENT`                                    |             |\n| `0x80000036` | `EarlyError`                    | Complete     | `WHEAP_EARLY_ERROR`                                         | Empty       |\n| `0x80000037` | `PcieOverrideInfo`              | Partial      | `WHEAP_PCIE_OVERRIDE_INFO`                                  |             |\n| `0x80000038` | `ReadPcieOverridesErr`          | Complete     | `WHEAP_PCIE_READ_OVERRIDES_ERR`                             |             |\n| `0x80000039` | `PcieConfigInfo`                | Complete     | `WHEAP_PCIE_CONFIG_INFO`                                    |             |\n| `0x80000040` | `PcieSummaryFailed`             | Complete     | `WHEA_THROTTLE_PCIE_ADD_EVENT`                              |             |\n| `0x80000041` | `ThrottleRegCorrupt`            | Complete     | `WHEA_THROTTLE_REGISTRY_CORRUPT_EVENT`                      |             |\n| `0x80000042` | `ThrottleAddErrSrcFailed`       | Complete     | `WHEA_THROTTLE_ADD_ERR_SRC_FAILED_EVENT`                    | Empty       |\n| `0x80000043` | `ThrottleRegDataIgnored`        | Complete     | `WHEA_THROTTLE_REG_DATA_IGNORED_EVENT`                      |             |\n| `0x80000044` | `EnableKeyNotifFailed`          | Complete     | `WHEA_PSHED_PLUGIN_ENABLE_NOTIFY_FAILED_EVENT`              |             |\n| `0x80000045` | `KeyNotificationFailed`         | Complete     | `WHEA_REGISTER_KEY_NOTIFICATION_FAILED_EVENT`               | Empty       |\n| `0x80000046` | `PcieRemoveDevice`              | Complete     | `WHEA_THROTTLE_PCIE_REMOVE_EVENT`                           |             |\n| `0x80000047` | `PcieAddDevice`                 | Complete     | `WHEA_THROTTLE_PCIE_ADD_EVENT`                              |             |\n| `0x80000048` | `PcieSpuriousErrSource`         | Complete     | `WHEAP_SPURIOUS_AER_EVENT`                                  |             |\n| `0x80000049` | `MemoryAddDevice`               | Complete     | `WHEA_THROTTLE_MEMORY_ADD_OR_REMOVE_EVENT`                  |             |\n| `0x8000004a` | `MemoryRemoveDevice`            | Complete     | `WHEA_THROTTLE_MEMORY_ADD_OR_REMOVE_EVENT`                  |             |\n| `0x8000004b` | `MemorySummaryFailed`           | Complete     | `WHEA_MEMORY_THROTTLE_SUMMARY_FAILED_EVENT`                 |             |\n| `0x8000004c` | `PcieDpcError`                  | Complete     | `WHEAP_DPC_ERROR_EVENT`                                     |             |\n| `0x8000004d` | `CpuBusesInitFailed`            | Complete     | `WHEA_PSHED_PI_CPU_BUSES_INIT_FAILED_EVENT`                 |             |\n| `0x8000004e` | `PshedPluginInitFailed`         | Complete     | `WHEA_PSHED_PLUGIN_INIT_FAILED_EVENT`                       |             |\n| `0x8000004f` | `FailedAddToDefectList`         | Complete     | `WHEA_FAILED_ADD_DEFECT_LIST_EVENT`                         | Empty       |\n| `0x80000050` | `DefectListFull`                | Complete     | `WHEAP_PLUGIN_DEFECT_LIST_FULL_EVENT`                       | Empty       |\n| `0x80000051` | `DefectListUEFIVarFailed`       | Complete     | `WHEAP_PLUGIN_DEFECT_LIST_UEFI_VAR_FAILED`                  | Empty       |\n| `0x80000052` | `DefectListCorrupt`             | Complete     | `WHEAP_PLUGIN_DEFECT_LIST_CORRUPT`                          | Empty       |\n| `0x80000053` | `BadHestNotifyData`             | Complete     | `WHEAP_BAD_HEST_NOTIFY_DATA_EVENT`                          |             |\n| `0x80000054` | `RowFailure`                    | Complete     | `WHEAP_ROW_FAILURE_EVENT`                                   |             |\n| `0x80000055` | `SrasTableNotFound`             | Complete     | `WHEA_SRAS_TABLE_NOT_FOUND`                                 | Empty       |\n| `0x80000056` | `SrasTableError`                | Complete     | `WHEA_SRAS_TABLE_ERROR`                                     | Empty       |\n| `0x80000057` | `SrasTableEntries`              | Partial      | `WHEA_SRAS_TABLE_ENTRIES_EVENT`                             |             |\n| `0x80000058` | `PFANotifyCallbackAction`       | Complete     | `WHEAP_PFA_MEMORY_OFFLINED_NOTIFY_CALLBACK_ACTION`          |             |\n| `0x80000059` | `SELBugCheckCpusQuiesced`       | Unsupported  | Unknown                                                     |             |\n| `0x8000005a` | `PshedPiCpuid`                  | Complete     | `WHEA_PSHED_PI_CPUID`                                       |             |\n| `0x8000005b` | `SrasTableBadData`              | Complete     | `WHEAP_SRAS_TABLE_BAD_DATA`                                 | Empty       |\n| `0x8000005c` | `DriFsStatus`                   | Unsupported  | Unknown                                                     |             |\n| `0x80000060` | `CpusFrozen`                    | Complete     | `WHEAP_BUGCHECK_CPUS_FROZEN_EVENT`                          | Empty, SEL  |\n| `0x80000061` | `CpusFrozenNoCrashDump`         | Unsupported  | Unknown                                                     |             |\n| `0x80000062` | `RegNotifyPolicyChange`         | Complete     | `WHEA_REGNOTIFY_POLICY_CHANGE_EVENT`                        |             |\n| `0x80000063` | `RegError`                      | Complete     | `WHEA_REGISTRY_ERROR_EVENT`                                 |             |\n| `0x80000064` | `RowOfflineEvent`               | Complete     | `WHEAP_ROW_OFFLINE_EVENT`                                   |             |\n| `0x80000065` | `BitOfflineEvent`               | Complete     | `WHEAP_BIT_OFFLINE_EVENT`                                   |             |\n| `0x80000066` | `BadGasFields`                  | Complete     | `WHEA_GAS_ERROR_EVENT`                                      |             |\n| `0x80000067` | `CrashDumpError`                | Complete     | `WHEA_CRASHDUMP_EVENT_LOG_ENTRY_WITH_STATUS`                | SEL         |\n| `0x80000068` | `CrashDumpCheckpoint`           | Unsupported  | Unknown                                                     |             |\n| `0x80000069` | `CrashDumpProgressPercent`      | Complete     | `WHEA_CRASHDUMP_EVENT_LOG_ENTRY_ULONG1`                     | SEL         |\n| `0x8000006a` | `PreviousCrashBugCheckProgress` | Unsupported  | Unknown                                                     |             |\n| `0x8000006b` | `SELBugCheckStackDump`          | Complete     | `WHEA_SEL_RAW_EVENT`                                        | SEL         |\n| `0x8000006c` | `PciePromotedAerErr`            | Complete     | `WHEAP_PROMOTED_AER_ERROR_EVENT`                            |             |\n| `0x80040010` | `PshedPiTraceLog`               | Complete     | `WHEA_PSHED_PI_TRACE_EVENT`                                 |             |\n\nNotes:\n\n- *Empty* means the event has no payload data; i.e. they consist only of an event log entry header.\n- *SEL* means the event is logged to the *System Event Log* of the BMC via IPMI. It's possible these events are later read back from the SEL and inserted into the Windows Event Log when the system returns to a \"healthy\" state, but I haven't verified if this is the case.\n\nTechnical details\n-----------------\n\n### Architecture\n\nThe functionality that comprises WHEA is implemented across several system components:\n\n- Windows NT kernel (`ntoskrnl.exe`)  \n  WHEA itself is implemented directly in the Windows NT kernel. All of the kernel-mode WHEA APIs and associated functionality are a part of the main kernel binary.\n- *Platform-specific Hardware Error Driver (PSHED)* (`pshed.dll`)  \n  The PSHED ships with Windows and is implemented as a kernel-mode driver with the role of abstracting the platform's hardware error reporting facilities. It is analogous to the *Hardware Abstraction Layer (HAL)* but for functionality specific to WHEA.\n- PSHED plug-ins  \n  For supporting additional hardware error reporting functionality present in a platform which is not handled by the built-in PSHED, 3rd-parties can provide a *PSHED plug-in*. A PSHED plug-in is a kernel-mode driver which registers with PSHED, providing a set of callback functions to expose the additional platform hardware error reporting capabilities. In practice, this class of driver appears to be quite rare(?).\n- Hardware drivers  \n  WHEA exposes a public API which drivers can integrate with to report hardware errors and where possible recover from them. Several built-in Windows drivers integrate with WHEA, for example, the PCI bus driver (`pci.sys`).\n\n### Error records\n\nError records take the form of *Common Platform Error Records (CPER)* as defined in the *Unified Extensible Firmware Interface (UEFI)* specification. These records consist of three parts:\n\n- Header  \n  An initial error record header, the structure of which is defined in the UEFI specification.\n- Section Descriptor  \n  One or more error record section descriptors, the structure of which is defined in the UEFI specification. Each section descriptor maps to an error record section.\n- Section  \n  One or more error record sections. Each error record section has an associated error record section descriptor which, among other things, defines the type of error section.\n\nError sections have their own unique binary format as informed by the section type, specified as a GUID, in the corresponding section descriptor. The UEFI specification defines several standard error section types (e.g. generic processor error, memory error), but 3rd-parties are free to define their own sections.\n\nIn terms of the data structure layout, the header always comes first, then the section descriptors, and finally the sections. There can be unused space between the section descriptors and the sections, and at the end of the last section, to facilitate adding additional section descriptors and sections to an existing allocation.\n\n### Event records\n\nEvent records are purely a WHEA concept; they are not defined in the UEFI specification. While there are many more event record types defined than error record types, they are generally simpler to decode. Most event records have a simple structure containing a few fields that are primitive types. In contrast, many error records have a complex format with multiple embedded structures which in turn have many fields.\n\nGlossary\n--------\n\n### Buses\n\n#### Types\n\n- **PCI**  \n  Peripheral Component Interconnect\n- **PCI-X**  \n  PCI eXtended\n- **PCIe**  \n  PCI Express\n\n#### PCIe\n\n- **AER**  \n  Advanced Error Reporting\n- **DPC**  \n  Downstream Port Containment\n- **eDPC**  \n  Enhanced Downstream Port Containment\n\n### Memory\n\n- **DIMM**  \n  Dual In-Line Memory Module\n- **ECC**  \n  Error Correction Code\n- **PFN**  \n  Page Frame Number\n- **PMem**  \n  Persistent Memory\n\n### Microsoft\n\n- **ETW**  \n  Event Tracing for Windows\n- **IRQL**  \n  Interrupt Request Level\n- **LLHEH**  \n  Low-Level Hardware Error Handler\n- **PFA**  \n  Predictive Failure Analysis\n- **PSHED**  \n  Platform-Specific Hardware Error Driver\n- **WHEA**  \n  Windows Hardware Error Architecture\n\n### Processors\n\n#### Generic\n\n- **IP**  \n  Instruction Pointer\n- **MAE**  \n  Micro-Architecture Error\n- **MMIO**  \n  Memory-mapped I/O\n- **TLB**  \n  Translation Lookaside Buffer\n\n#### Architectures\n\n- **IA32**  \n  Intel Architecture, 32-bit\n- **IA64**  \n  Intel Architecture, 64-bit (Itanium)\n- **IPF**  \n  Itanium Platform\n- **XPF**  \n  x86 Platform\n\n#### Arm\n\n- **GIC**  \n  Generic Interrupt Controller\n- **PSCI**  \n  Power State Coordination Interface\n- **SMMU**  \n  System Memory Management Unit\n- **SEA**  \n  Synchronous External Abort\n- **SEI**  \n  SError Interrupt\n\n#### IA-32 (x86)\n\n- **APIC**  \n  Advanced Programmable Interrupt Controller\n- **CMC**  \n  Corrected Machine Check\n- **CMCI**  \n  Corrected Machine Check Interrupt\n- **MCA**  \n  Machine Check Architecture\n- **MCE**  \n  Machine Check Exception\n- **MCI**  \n  Machine Check Interrupt\n- **MSR**  \n  Model-Specific Register\n- **SRAR**  \n  Software Recoverable Action Required\n\n#### IA-64 (Itanium)\n\n- **CPE**  \n  Corrected Platform Error\n- **MCA**  \n  Machine Check Abort\n- **SAL**  \n  System Abstraction Layer\n\n### Specifications\n\n- **ACPI**  \n  Advanced Configuration and Power Interface\n- **IPMI**  \n  Intelligent Platform Management Interface\n- **SDEI**  \n  Software Delegated Exception Interface\n- **UEFI**  \n  Unified Extensible Firmware Interface\n\n#### ACPI\n\n- **AEST**  \n  Arm Error Source Table\n- **EINJ**  \n  Error Injection table\n- **GAS**  \n  Generic Address Structure\n- **GHES**  \n  Generic Hardware Error Source\n- **GSIV**  \n  Global System Interrupt Vector\n- **HEST**  \n  Hardware Error Source Table\n- **NFIT**  \n  NVDIMM Firmware Interface Table\n- **OSC**  \n  Operating System Capabilities\n- **SCI**  \n  Service Control Interrupt\n- **SRAS**  \n  Static Resource Allocation Structure\n\n#### IPMI\n\n- **SEL**  \n  System Event Log\n\n#### UEFI\n\n- **CPER**  \n  Common Platform Error Record\n- **PRM**  \n  Platform Runtime Mechanism\n\n### Miscellaneous\n\n- **BMC**  \n  Baseboard Management Controller\n- **CCIX**  \n  Cache Coherent Interconnect for Accelerators\n- **CXL**  \n  Compute Express Link\n- **DMA**  \n  Direct Memory Access\n- **DMAr**  \n  DMA remapping\n- **FRU**  \n  Field Replaceable Unit\n- **GPIO**  \n  General Purpose Input/Output\n- **IOMMU**  \n  Input/Output Memory Management Unit\n- **NMI**  \n  Non-Maskable Interrupt\n- **OEM**  \n  Original Equipment Manufacturer\n- **RAS**  \n  Reliability, Availability, and Serviceability\n- **SOC**  \n  System on Chip\n\nLicense\n-------\n\nAll content is licensed under the terms of [The MIT License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fralish%2Fdecodewhearecord","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fralish%2Fdecodewhearecord","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fralish%2Fdecodewhearecord/lists"}