[SDK] Update HAL private dispatch table definitions to Windows 10 November 2015 Update (#8235)

Mostly based on the information on Geoff Chappell's website, Vergilius Project and WDK 10.0.10586.0
This commit is contained in:
Adam Słaboń
2026-03-08 19:04:17 +01:00
committed by GitHub
parent f9b3aad55e
commit 8a2864dd11
6 changed files with 2095 additions and 31 deletions

View File

@@ -32,25 +32,168 @@ Author:
//
// Private HAL Callbacks
//
#define HalHandlerForBus HALPRIVATEDISPATCH->HalHandlerForBus
#define HalHandlerForConfigSpace HALPRIVATEDISPATCH->HalHandlerForConfigSpace
#define HalLocateHiberRanges HALPRIVATEDISPATCH->HalLocateHiberRanges
#define HalRegisterBusHandler HALPRIVATEDISPATCH->HalRegisterBusHandler
#define HalSetWakeEnable HALPRIVATEDISPATCH->HalSetWakeEnable
#define HalSetWakeAlarm HALPRIVATEDISPATCH->HalSetWakeAlarm
#define HalPciTranslateBusAddress HALPRIVATEDISPATCH->HalPciTranslateBusAddress
#define HalPciAssignSlotResources HALPRIVATEDISPATCH->HalPciAssignSlotResources
#define HalHaltSystem HALPRIVATEDISPATCH->HalHaltSystem
#define HalFindBusAddressTranslation HALPRIVATEDISPATCH->HalFindBusAddressTranslation
#define HalResetDisplay HALPRIVATEDISPATCH->HalResetDisplay
#define HalAllocateMapRegisters HALPRIVATEDISPATCH->HalAllocateMapRegisters
#define KdSetupPciDeviceForDebugging HALPRIVATEDISPATCH->KdSetupPciDeviceForDebugging
#define KdReleasePciDeviceforDebugging HALPRIVATEDISPATCH->KdReleasePciDeviceforDebugging
#define KdGetAcpiTablePhase0 HALPRIVATEDISPATCH->KdGetAcpiTablePhase0
#define KdCheckPowerButton HALPRIVATEDISPATCH->KdCheckPowerButton
#define HalVectorToIDTEntry HALPRIVATEDISPATCH->HalVectorToIDTEntry
#define KdMapPhysicalMemory64 HALPRIVATEDISPATCH->KdMapPhysicalMemory64
#define KdUnmapVirtualAddress HALPRIVATEDISPATCH->KdUnmapVirtualAddress
#define HalHandlerForBus HALPRIVATEDISPATCH->HalHandlerForBus
#define HalHandlerForConfigSpace HALPRIVATEDISPATCH->HalHandlerForConfigSpace
#define HalLocateHiberRanges HALPRIVATEDISPATCH->HalLocateHiberRanges
#define HalRegisterBusHandler HALPRIVATEDISPATCH->HalRegisterBusHandler
#define HalSetWakeEnable HALPRIVATEDISPATCH->HalSetWakeEnable
#define HalSetWakeAlarm HALPRIVATEDISPATCH->HalSetWakeAlarm
#define HalPciTranslateBusAddress HALPRIVATEDISPATCH->HalPciTranslateBusAddress
#define HalPciAssignSlotResources HALPRIVATEDISPATCH->HalPciAssignSlotResources
#define HalHaltSystem HALPRIVATEDISPATCH->HalHaltSystem
#define HalFindBusAddressTranslation HALPRIVATEDISPATCH->HalFindBusAddressTranslation
#define HalResetDisplay HALPRIVATEDISPATCH->HalResetDisplay
#if (NTDDI_VERSION >= NTDDI_WS03)
#define HalAllocateMapRegisters HALPRIVATEDISPATCH->HalAllocateMapRegisters
#endif
#if (NTDDI_VERSION >= NTDDI_WINXP)
#define KdSetupPciDeviceForDebugging HALPRIVATEDISPATCH->KdSetupPciDeviceForDebugging
#define KdReleasePciDeviceforDebugging HALPRIVATEDISPATCH->KdReleasePciDeviceforDebugging
#define KdGetAcpiTablePhase0 HALPRIVATEDISPATCH->KdGetAcpiTablePhase0
#define KdCheckPowerButton HALPRIVATEDISPATCH->KdCheckPowerButton
#define HalVectorToIDTEntry HALPRIVATEDISPATCH->HalVectorToIDTEntry
#define KdMapPhysicalMemory64 HALPRIVATEDISPATCH->KdMapPhysicalMemory64
#define KdUnmapVirtualAddress HALPRIVATEDISPATCH->KdUnmapVirtualAddress
#endif
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
#define KdGetPciDataByOffset HALPRIVATEDISPATCH->KdGetPciDataByOffset
#define KdSetPciDataByOffset HALPRIVATEDISPATCH->KdSetPciDataByOffset
#define HalGetInterruptVectorOverride HALPRIVATEDISPATCH->HalGetInterruptVectorOverride
#define HalGetVectorInputOverride HALPRIVATEDISPATCH->HalGetVectorInputOverride
#define HalLoadMicrocode HALPRIVATEDISPATCH->HalLoadMicrocode
#define HalUnloadMicrocode HALPRIVATEDISPATCH->HalUnloadMicrocode
#define HalPostMicrocodeUpdate HALPRIVATEDISPATCH->HalPostMicrocodeUpdate
#endif
#if (NTDDI_VERSION >= NTDDI_VISTASP1)
#define HalAllocateMessageTargetOverride HALPRIVATEDISPATCH->HalAllocateMessageTargetOverride
#define HalFreeMessageTargetOverride HALPRIVATEDISPATCH->HalFreeMessageTargetOverride
#define HalDpReplaceBegin HALPRIVATEDISPATCH->HalDpReplaceBegin
#define HalDpReplaceTarget HALPRIVATEDISPATCH->HalDpReplaceTarget
#define HalDpReplaceControl HALPRIVATEDISPATCH->HalDpReplaceControl
#define HalDpReplaceEnd HALPRIVATEDISPATCH->HalDpReplaceEnd
#define HalPrepareForBugcheck HALPRIVATEDISPATCH->HalPrepareForBugcheck
#endif
#if (NTDDI_VERSION >= NTDDI_WIN7)
#define HalQueryWakeTime HALPRIVATEDISPATCH->HalQueryWakeTime
#define HalReportIdleStateUsage HALPRIVATEDISPATCH->HalReportIdleStateUsage
#define HalTscSynchronization HALPRIVATEDISPATCH->HalTscSynchronization
#define HalWheaInitProcessorGenericSection HALPRIVATEDISPATCH->HalWheaInitProcessorGenericSection
#define HalStopLegacyUsbInterrupts HALPRIVATEDISPATCH->HalStopLegacyUsbInterrupts
#endif
#if (NTDDI_VERSION >= NTDDI_VISTASP2)
#define HalReadWheaPhysicalMemory HALPRIVATEDISPATCH->HalReadWheaPhysicalMemory
#define HalWriteWheaPhysicalMemory HALPRIVATEDISPATCH->HalWriteWheaPhysicalMemory
#endif
#if (NTDDI_VERSION >= NTDDI_WIN7)
#define HalDpMaskLevelTriggeredInterrupts HALPRIVATEDISPATCH->HalDpMaskLevelTriggeredInterrupts
#define HalDpUnmaskLevelTriggeredInterrupts HALPRIVATEDISPATCH->HalDpUnmaskLevelTriggeredInterrupts
#define HalDpGetInterruptReplayState HALPRIVATEDISPATCH->HalDpGetInterruptReplayState
#define HalDpReplayInterrupts HALPRIVATEDISPATCH->HalDpReplayInterrupts
#define HalQueryIoPortAccessSupported HALPRIVATEDISPATCH->HalQueryIoPortAccessSupported
#endif
#if (NTDDI_VERSION >= NTDDI_WIN8)
#define KdSetupIntegratedDeviceForDebugging HALPRIVATEDISPATCH->KdSetupIntegratedDeviceForDebugging
#define KdReleaseIntegratedDeviceForDebugging HALPRIVATEDISPATCH->KdReleaseIntegratedDeviceForDebugging
#define HalGetEnlightenmentInformation HALPRIVATEDISPATCH->HalGetEnlightenmentInformation
#define HalAllocateEarlyPages HALPRIVATEDISPATCH->HalAllocateEarlyPages
#define HalMapEarlyPages HALPRIVATEDISPATCH->HalMapEarlyPages
#if (NTDDI_VERSION == NTDDI_WIN8)
#define HalGetClockOwner HALPRIVATEDISPATCH->HalGetClockOwner
#define HalGetClockConfiguration HALPRIVATEDISPATCH->HalGetClockConfiguration
#endif
#define HalNotifyProcessorFreeze HALPRIVATEDISPATCH->HalNotifyProcessorFreeze
#define HalPrepareProcessorForIdle HALPRIVATEDISPATCH->HalPrepareProcessorForIdle
#define HalRegisterLogRoutine HALPRIVATEDISPATCH->HalRegisterLogRoutine
#define HalResumeProcessorFromIdle HALPRIVATEDISPATCH->HalResumeProcessorFromIdle
#define HalVectorToIDTEntryEx HALPRIVATEDISPATCH->HalVectorToIDTEntryEx
#define HalSecondaryInterruptQueryPrimaryInformation HALPRIVATEDISPATCH->HalSecondaryInterruptQueryPrimaryInformation
#define HalMaskInterrupt HALPRIVATEDISPATCH->HalMaskInterrupt
#define HalUnmaskInterrupt HALPRIVATEDISPATCH->HalUnmaskInterrupt
#define HalIsInterruptTypeSecondary HALPRIVATEDISPATCH->HalIsInterruptTypeSecondary
#define HalAllocateGsivForSecondaryInterrupt HALPRIVATEDISPATCH->HalAllocateGsivForSecondaryInterrupt
#define HalAddInterruptRemapping HALPRIVATEDISPATCH->HalAddInterruptRemapping
#define HalRemoveInterruptRemapping HALPRIVATEDISPATCH->HalRemoveInterruptRemapping
#define HalSaveAndDisableHvEnlightenment HALPRIVATEDISPATCH->HalSaveAndDisableHvEnlightenment
#define HalRestoreHvEnlightenment HALPRIVATEDISPATCH->HalRestoreHvEnlightenment
#define HalFlushIoBuffersExternalCache HALPRIVATEDISPATCH->HalFlushIoBuffersExternalCache
#define HalFlushExternalCache HALPRIVATEDISPATCH->HalFlushExternalCache
#define HalPciEarlyRestore HALPRIVATEDISPATCH->HalPciEarlyRestore
#define HalGetProcessorId HALPRIVATEDISPATCH->HalGetProcessorId
#define HalAllocatePmcCounterSet HALPRIVATEDISPATCH->HalAllocatePmcCounterSet
#define HalCollectPmcCounters HALPRIVATEDISPATCH->HalCollectPmcCounters
#define HalFreePmcCounterSet HALPRIVATEDISPATCH->HalFreePmcCounterSet
#define HalProcessorHalt HALPRIVATEDISPATCH->HalProcessorHalt
#define HalTimerQueryCycleCounter HALPRIVATEDISPATCH->HalTimerQueryCycleCounter
#if (NTDDI_VERSION == NTDDI_WIN8)
#define HalGetNextTickDuration HALPRIVATEDISPATCH->HalGetNextTickDuration
#endif
#define HalPciMarkHiberPhase HALPRIVATEDISPATCH->HalPciMarkHiberPhase
#define HalQueryProcessorRestartEntryPoint HALPRIVATEDISPATCH->HalQueryProcessorRestartEntryPoint
#define HalRequestInterrupt HALPRIVATEDISPATCH->HalRequestInterrupt
#define HalEnumerateUnmaskedInterrupts HALPRIVATEDISPATCH->HalEnumerateUnmaskedInterrupts
#define HalFlushAndInvalidatePageExternalCache HALPRIVATEDISPATCH->HalFlushAndInvalidatePageExternalCache
#define KdEnumerateDebuggingDevices HALPRIVATEDISPATCH->KdEnumerateDebuggingDevices
#define HalFlushIoRectangleExternalCache HALPRIVATEDISPATCH->HalFlushIoRectangleExternalCache
#define HalPowerEarlyRestore HALPRIVATEDISPATCH->HalPowerEarlyRestore
#define HalQueryCapsuleCapabilities HALPRIVATEDISPATCH->HalQueryCapsuleCapabilities
#define HalUpdateCapsule HALPRIVATEDISPATCH->HalUpdateCapsule
#define HalPciMultiStageResumeCapable HALPRIVATEDISPATCH->HalPciMultiStageResumeCapable
#define HalDmaFreeCrashDumpRegisters HALPRIVATEDISPATCH->HalDmaFreeCrashDumpRegisters
#define HalAcpiAoacCapable HALPRIVATEDISPATCH->HalAcpiAoacCapable
#endif
#if (NTDDI_VERSION >= NTDDI_WINBLUE)
#define HalInterruptSetDestination HALPRIVATEDISPATCH->HalInterruptSetDestination
#define HalGetClockConfiguration HALPRIVATEDISPATCH->HalGetClockConfiguration
#define HalClockTimerActivate HALPRIVATEDISPATCH->HalClockTimerActivate
#define HalClockTimerInitialize HALPRIVATEDISPATCH->HalClockTimerInitialize
#define HalClockTimerStop HALPRIVATEDISPATCH->HalClockTimerStop
#define HalClockTimerArm HALPRIVATEDISPATCH->HalClockTimerArm
#define HalTimerOnlyClockInterruptPending HALPRIVATEDISPATCH->HalTimerOnlyClockInterruptPending
#define HalAcpiGetMultiNode HALPRIVATEDISPATCH->HalAcpiGetMultiNode
#define HalPowerSetRebootHandler HALPRIVATEDISPATCH->HalPowerSetRebootHandler
#define HalIommuRegisterDispatchTable HALPRIVATEDISPATCH->HalIommuRegisterDispatchTable
#define HalTimerWatchdogStart HALPRIVATEDISPATCH->HalTimerWatchdogStart
#define HalTimerWatchdogResetCountdown HALPRIVATEDISPATCH->HalTimerWatchdogResetCountdown
#define HalTimerWatchdogStop HALPRIVATEDISPATCH->HalTimerWatchdogStop
#define HalTimerWatchdogGeneratedLastReset HALPRIVATEDISPATCH->HalTimerWatchdogGeneratedLastReset
#define HalTimerWatchdogTriggerSystemReset HALPRIVATEDISPATCH->HalTimerWatchdogTriggerSystemReset
#endif
#if (NTDDI_VERSION >= NTDDI_WIN10)
#define HalInterruptVectorDataToGsiv HALPRIVATEDISPATCH->HalInterruptVectorDataToGsiv
#define HalInterruptGetHighestPriorityInterrupt HALPRIVATEDISPATCH->HalInterruptGetHighestPriorityInterrupt
#define HalProcessorOn HALPRIVATEDISPATCH->HalProcessorOn
#define HalProcessorOff HALPRIVATEDISPATCH->HalProcessorOff
#define HalProcessorFreeze HALPRIVATEDISPATCH->HalProcessorFreeze
#define HalDmaLinkDeviceObjectByToken HALPRIVATEDISPATCH->HalDmaLinkDeviceObjectByToken
#define HalDmaCheckAdapterToken HALPRIVATEDISPATCH->HalDmaCheckAdapterToken
#define HalPciLateRestore HALPRIVATEDISPATCH->HalPciLateRestore
#define HalTimerConvertPerformanceCounterToAuxiliaryCounter HALPRIVATEDISPATCH->HalTimerConvertPerformanceCounterToAuxiliaryCounter
#define HalTimerConvertAuxiliaryCounterToPerformanceCounter HALPRIVATEDISPATCH->HalTimerConvertAuxiliaryCounterToPerformanceCounter
#define HalTimerQueryAuxiliaryCounterFrequency HALPRIVATEDISPATCH->HalTimerQueryAuxiliaryCounterFrequency
#define HalConnectThermalInterrupt HALPRIVATEDISPATCH->HalConnectThermalInterrupt
#define HalIsEFIRuntimeActive HALPRIVATEDISPATCH->HalIsEFIRuntimeActive
#endif
//
// Private HAL IOMMU Callbacks
//
#define HalIommuSupportEnabled HalIommuDispatch->HalIommuSupportEnabled
#define HalIommuGetConfiguration HalIommuDispatch->HalIommuGetConfiguration
#define HalIommuGetLibraryContext HalIommuDispatch->HalIommuGetLibraryContext
#define HalIommuMapDevice HalIommuDispatch->HalIommuMapDevice
#define HalIommuEnableDevicePasid HalIommuDispatch->HalIommuEnableDevicePasid
#define HalIommuSetAddressSpace HalIommuDispatch->HalIommuSetAddressSpace
#define HalIommuDisableDevicePasid HalIommuDispatch->HalIommuDisableDevicePasid
#define HalIommuUnmapDevice HalIommuDispatch->HalIommuUnmapDevice
#define HalIommuFreeLibraryContext HalIommuDispatch->HalIommuFreeLibraryContext
#define HalIommuFlushTb HalIommuDispatch->HalIommuFlushTb
#define HalIommuFlushAllPasid HalIommuDispatch->HalIommuFlushAllPasid
#define HalIommuProcessPageRequestQueue HalIommuDispatch->HalIommuProcessPageRequestQueue
#define HalIommuFaultRoutine HalIommuDispatch->HalIommuFaultRoutine
#define HalIommuReferenceAsid HalIommuDispatch->HalIommuReferenceAsid
#define HalIommuDereferenceAsid HalIommuDispatch->HalIommuDereferenceAsid
#define HalIommuServicePageFault HalIommuDispatch->HalIommuServicePageFault
#define HalIommuDevicePowerChange HalIommuDispatch->HalIommuDevicePowerChange
//
// Display Functions

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,15 @@
/* Hardware Abstraction Layer Types */
$if (_WDMDDK_)
typedef NTSTATUS
NTAPI
PROCESSOR_HALT_ROUTINE(
_Inout_opt_ PVOID Context
);
typedef PROCESSOR_HALT_ROUTINE *PPROCESSOR_HALT_ROUTINE;
$endif (_WDMDDK_)
$if (_NTDDK_)
typedef BOOLEAN
(NTAPI *PHAL_RESET_DISPLAY_PARAMETERS)(
@@ -382,8 +392,6 @@ typedef struct _HAL_AMLI_BAD_IO_ADDRESS_LIST {
PHALIOREADWRITEHANDLER IOHandler;
} HAL_AMLI_BAD_IO_ADDRESS_LIST, *PHAL_AMLI_BAD_IO_ADDRESS_LIST;
#if defined(_X86_) || defined(_IA64_) || defined(_AMD64_)
typedef VOID
(NTAPI *PHALMCAINTERFACELOCK)(VOID);
@@ -422,6 +430,23 @@ typedef ERROR_SEVERITY
#endif
#if defined(_ARM_) || defined(_ARM64_)
struct _KTRAP_FRAME;
struct _KEXCEPTION_FRAME;
typedef PVOID PCMC_EXCEPTION;
typedef PVOID PCPE_EXCEPTION;
typedef VOID
(NTAPI *PDRIVER_EXCPTN_CALLBACK)(
_In_ PVOID Context,
_In_ struct _KTRAP_FRAME *TrapFrame,
_In_ struct _KEXCEPTION_FRAME *ExceptionFrame,
_In_ PVOID Exception);
#endif /* defined(_ARM_) || defined(_ARM64_) */
#if defined(_X86_) || defined(_IA64_)
typedef
#if defined(_IA64_)
@@ -506,8 +531,6 @@ typedef struct _CPE_DRIVER_INFO {
PVOID DeviceContext;
} CPE_DRIVER_INFO, *PCPE_DRIVER_INFO;
#endif // defined(_X86_) || defined(_IA64_) || defined(_AMD64_)
#if defined(_IA64_)
typedef NTSTATUS

View File

@@ -39,6 +39,13 @@ typedef enum {
} KD_NAMESPACE_ENUM, *PKD_NAMESPACE_ENUM;
#endif
typedef enum {
KdConfigureDeviceAndContinue,
KdSkipDeviceAndContinue,
KdConfigureDeviceAndStop,
KdSkipDeviceAndStop,
} KD_CALLBACK_ACTION, *PKD_CALLBACK_ACTION;
#if (NTDDI_VERSION >= NTDDI_WIN10)
typedef struct _DEBUG_TRANSPORT_DATA {
ULONG HwContextSize;
@@ -116,6 +123,10 @@ typedef struct _DEBUG_DEVICE_DESCRIPTOR {
#endif
} DEBUG_DEVICE_DESCRIPTOR, *PDEBUG_DEVICE_DESCRIPTOR;
typedef KD_CALLBACK_ACTION
(NTAPI *PDEBUG_DEVICE_FOUND_FUNCTION)(
_Inout_ PDEBUG_DEVICE_DESCRIPTOR Device);
typedef NTSTATUS
(NTAPI *pKdSetupPciDeviceForDebugging)(
_In_opt_ PVOID LoaderBlock,
@@ -133,7 +144,7 @@ typedef PVOID
typedef VOID
(NTAPI *pKdCheckPowerButton)(VOID);
#if (NTDDI_VERSION >= NTDDI_VISTA)
#if (NTDDI_VERSION >= NTDDI_VISTASP1)
typedef PVOID
(NTAPI *pKdMapPhysicalMemory64)(
_In_ PHYSICAL_ADDRESS PhysicalAddress,
@@ -172,4 +183,19 @@ typedef ULONG
_In_reads_bytes_(Length) PVOID Buffer,
_In_ ULONG Offset,
_In_ ULONG Length);
typedef NTSTATUS
(NTAPI *pKdEnumerateDebuggingDevices)(
_In_ PVOID LoaderBlock,
_Inout_ PDEBUG_DEVICE_DESCRIPTOR Device,
_In_ PDEBUG_DEVICE_FOUND_FUNCTION Callback);
typedef NTSTATUS
(NTAPI *pKdSetupIntegratedDeviceForDebugging)(
_In_opt_ PVOID LoaderBlock,
_Inout_ PDEBUG_DEVICE_DESCRIPTOR IntegratedDevice);
typedef NTSTATUS
(NTAPI *pKdReleaseIntegratedDeviceForDebugging)(
_Inout_ PDEBUG_DEVICE_DESCRIPTOR IntegratedDevice);
$endif (_NTDDK_)

View File

@@ -75,7 +75,7 @@ struct _DISK_GEOMETRY_EX;
/* Structures not exposed to drivers */
typedef struct _BUS_HANDLER *PBUS_HANDLER;
typedef struct _DEVICE_HANDLER_OBJECT *PDEVICE_HANDLER_OBJECT;
#if defined(_NTHAL_INCLUDED_)
#if defined(_NTHAL_INCLUDED_) || defined(__REACTOS__)
typedef struct _KAFFINITY_EX *PKAFFINITY_EX;
#endif
typedef struct _PEB *PPEB;
@@ -104,6 +104,7 @@ $include (mmtypes.h)
$include (pstypes.h)
$include (rtltypes.h)
$include (setypes.h)
$include (wheatypes.h)
#if defined(_M_IX86)
$include(x86/ke.h)

114
sdk/include/xdk/wheatypes.h Normal file
View File

@@ -0,0 +1,114 @@
/******************************************************************************
* Windows Hardware Error Architecture Types *
******************************************************************************/
$if (_NTDDK_)
typedef union _WHEA_ERROR_RECORD_SECTION_DESCRIPTOR_FLAGS
{
struct {
ULONG Primary : 1;
ULONG ContainmentWarning : 1;
ULONG Reset : 1;
ULONG ThresholdExceeded : 1;
ULONG ResourceNotAvailable : 1;
ULONG LatentError : 1;
ULONG Reserved : 26;
} DUMMYSTRUCTNAME;
ULONG AsULONG;
} WHEA_ERROR_RECORD_SECTION_DESCRIPTOR_FLAGS, *PWHEA_ERROR_RECORD_SECTION_DESCRIPTOR_FLAGS;
typedef union _WHEA_ERROR_RECORD_SECTION_DESCRIPTOR_VALIDBITS
{
struct {
UCHAR FRUId : 1;
UCHAR FRUText : 1;
UCHAR Reserved : 6;
} DUMMYSTRUCTNAME;
UCHAR AsUCHAR;
} WHEA_ERROR_RECORD_SECTION_DESCRIPTOR_VALIDBITS, *PWHEA_ERROR_RECORD_SECTION_DESCRIPTOR_VALIDBITS;
typedef union _WHEA_REVISION
{
struct {
UCHAR MinorRevision;
UCHAR MajorRevision;
} DUMMYSTRUCTNAME;
USHORT AsUSHORT;
} WHEA_REVISION, *PWHEA_REVISION;
typedef enum _WHEA_ERROR_SEVERITY
{
WheaErrSevRecoverable = 0,
WheaErrSevFatal = 1,
WheaErrSevCorrected = 2,
WheaErrSevInformational = 3
} WHEA_ERROR_SEVERITY, *PWHEA_ERROR_SEVERITY;
typedef struct _WHEA_ERROR_RECORD_SECTION_DESCRIPTOR
{
ULONG SectionOffset;
ULONG SectionLength;
WHEA_REVISION Revision;
WHEA_ERROR_RECORD_SECTION_DESCRIPTOR_VALIDBITS ValidBits;
UCHAR Reserved;
WHEA_ERROR_RECORD_SECTION_DESCRIPTOR_FLAGS Flags;
GUID SectionType;
GUID FRUId;
WHEA_ERROR_SEVERITY SectionSeverity;
CCHAR FRUText[20];
} WHEA_ERROR_RECORD_SECTION_DESCRIPTOR, *PWHEA_ERROR_RECORD_SECTION_DESCRIPTOR;
typedef union _WHEA_PROCESSOR_GENERIC_ERROR_SECTION_VALIDBITS
{
struct {
ULONGLONG ProcessorType : 1;
ULONGLONG InstructionSet : 1;
ULONGLONG ErrorType : 1;
ULONGLONG Operation : 1;
ULONGLONG Flags : 1;
ULONGLONG Level : 1;
ULONGLONG CPUVersion : 1;
ULONGLONG CPUBrandString : 1;
ULONGLONG ProcessorId : 1;
ULONGLONG TargetAddress : 1;
ULONGLONG RequesterId : 1;
ULONGLONG ResponderId : 1;
ULONGLONG InstructionPointer : 1;
ULONGLONG Reserved : 51;
} DUMMYSTRUCTNAME;
ULONGLONG ValidBits;
} WHEA_PROCESSOR_GENERIC_ERROR_SECTION_VALIDBITS, *PWHEA_PROCESSOR_GENERIC_ERROR_SECTION_VALIDBITS;
typedef struct _WHEA_PROCESSOR_GENERIC_ERROR_SECTION
{
WHEA_PROCESSOR_GENERIC_ERROR_SECTION_VALIDBITS ValidBits;
UCHAR ProcessorType;
UCHAR InstructionSet;
UCHAR ErrorType;
UCHAR Operation;
UCHAR Flags;
UCHAR Level;
USHORT Reserved;
ULONGLONG CPUVersion;
UCHAR CPUBrandString[128];
ULONGLONG ProcessorId;
ULONGLONG TargetAddress;
ULONGLONG RequesterId;
ULONGLONG ResponderId;
ULONGLONG InstructionPointer;
} WHEA_PROCESSOR_GENERIC_ERROR_SECTION, *PWHEA_PROCESSOR_GENERIC_ERROR_SECTION;
typedef struct _WHEA_RECOVERY_CONTEXT
{
union {
struct {
ULONG_PTR Address;
BOOLEAN Consumed;
UINT16 ErrorCode;
BOOLEAN ErrorIpValid;
BOOLEAN RestartIpValid;
} MemoryError;
};
UINT64 PartitionId;
UINT32 VpIndex;
} WHEA_RECOVERY_CONTEXT, *PWHEA_RECOVERY_CONTEXT;
$endif (_NTDDK_)