reactos/include/ddk/mce.h
Hermès Bélusca-Maïto b819608ed8 Create a branch for console restructuration work.
svn path=/branches/condrv_restructure/; revision=63104
2014-05-02 14:13:40 +00:00

1079 lines
28 KiB
C

#pragma once
#if defined(_X86_) || defined(_IA64_) || defined(_AMD64_)
typedef union _MCI_ADDR {
_ANONYMOUS_STRUCT struct {
ULONG Address;
ULONG Reserved;
} DUMMYSTRUCTNAME;
ULONGLONG QuadPart;
} MCI_ADDR, *PMCI_ADDR;
typedef enum {
HAL_MCE_RECORD,
HAL_MCA_RECORD
} MCA_EXCEPTION_TYPE;
#if defined(_AMD64_)
#if (NTDDI_VERSION <= NTDDI_WINXP)
typedef union _MCI_STATS {
struct {
USHORT McaCod;
USHORT ModelErrorCode;
ULONG OtherInfo:25;
ULONG Damage:1;
ULONG AddressValid:1;
ULONG MiscValid:1;
ULONG Enabled:1;
ULONG Uncorrected:1;
ULONG OverFlow:1;
ULONG Valid:1;
} MciStatus;
ULONG64 QuadPart;
} MCI_STATS, *PMCI_STATS;
#else
typedef union _MCI_STATS {
struct {
USHORT McaErrorCode;
USHORT ModelErrorCode;
ULONG OtherInformation:25;
ULONG ContextCorrupt:1;
ULONG AddressValid:1;
ULONG MiscValid:1;
ULONG ErrorEnabled:1;
ULONG UncorrectedError:1;
ULONG StatusOverFlow:1;
ULONG Valid:1;
} MciStatus;
ULONG64 QuadPart;
} MCI_STATS, *PMCI_STATS;
#endif /* (NTDDI_VERSION <= NTDDI_WINXP) */
#endif /* defined(_AMD64_) */
#if defined(_X86_)
typedef union _MCI_STATS {
struct {
USHORT McaCod;
USHORT MsCod;
ULONG OtherInfo:25;
ULONG Damage:1;
ULONG AddressValid:1;
ULONG MiscValid:1;
ULONG Enabled:1;
ULONG UnCorrected:1;
ULONG OverFlow:1;
ULONG Valid:1;
} MciStats;
ULONGLONG QuadPart;
} MCI_STATS, *PMCI_STATS;
#endif
#define MCA_EXTREG_V2MAX 24
#if defined(_X86_) || defined(_AMD64_)
#if (NTDDI_VERSION >= NTDDI_WINXP)
typedef struct _MCA_EXCEPTION {
ULONG VersionNumber;
MCA_EXCEPTION_TYPE ExceptionType;
LARGE_INTEGER TimeStamp;
ULONG ProcessorNumber;
ULONG Reserved1;
union {
struct {
UCHAR BankNumber;
UCHAR Reserved2[7];
MCI_STATS Status;
MCI_ADDR Address;
ULONGLONG Misc;
} Mca;
struct {
ULONGLONG Address;
ULONGLONG Type;
} Mce;
} u;
ULONG ExtCnt;
ULONG Reserved3;
ULONGLONG ExtReg[MCA_EXTREG_V2MAX];
} MCA_EXCEPTION, *PMCA_EXCEPTION;
#else
typedef struct _MCA_EXCEPTION {
ULONG VersionNumber;
MCA_EXCEPTION_TYPE ExceptionType;
LARGE_INTEGER TimeStamp;
ULONG ProcessorNumber;
ULONG Reserved1;
union {
struct {
UCHAR BankNumber;
UCHAR Reserved2[7];
MCI_STATS Status;
MCI_ADDR Address;
ULONGLONG Misc;
} Mca;
struct {
ULONGLONG Address;
ULONGLONG Type;
} Mce;
} u;
} MCA_EXCEPTION, *PMCA_EXCEPTION;
#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
typedef MCA_EXCEPTION CMC_EXCEPTION, *PCMC_EXCEPTION;
typedef MCA_EXCEPTION CPE_EXCEPTION, *PCPE_EXCEPTION;
#if (NTDDI_VERSION >= NTDDI_WINXP)
#define MCA_EXCEPTION_V1_SIZE FIELD_OFFSET(MCA_EXCEPTION, ExtCnt)
#define MCA_EXCEPTION_V2_SIZE sizeof(struct _MCA_EXCEPTION)
#endif
#endif /* defined(_X86_) || defined(_AMD64_) */
#if defined(_AMD64_) || defined(_IA64_)
typedef UCHAR ERROR_SEVERITY, *PERROR_SEVERITY;
typedef enum _ERROR_SEVERITY_VALUE {
ErrorRecoverable = 0,
ErrorFatal = 1,
ErrorCorrected = 2,
ErrorOthers = 3,
} ERROR_SEVERITY_VALUE;
#endif
#if defined(_IA64_)
typedef union _ERROR_REVISION {
USHORT Revision;
_ANONYMOUS_STRUCT struct {
UCHAR Minor;
UCHAR Major;
} DUMMYSTRUCTNAME;
} ERROR_REVISION, *PERROR_REVISION;
#if (NTDDI_VERSION > NTDDI_WINXP)
#define ERROR_MAJOR_REVISION_SAL_03_00 0
#define ERROR_MINOR_REVISION_SAL_03_00 2
#define ERROR_REVISION_SAL_03_00 {ERROR_MINOR_REVISION_SAL_03_00,ERROR_MAJOR_REVISION_SAL_03_00}
#define ERROR_FIXED_SECTION_REVISION {2,0}
#else
#define ERROR_REVISION_SAL_03_00 {2,0}
#endif /* (NTDDI_VERSION > NTDDI_WINXP) */
typedef union _ERROR_TIMESTAMP {
ULONGLONG TimeStamp;
_ANONYMOUS_STRUCT struct {
UCHAR Seconds;
UCHAR Minutes;
UCHAR Hours;
UCHAR Reserved;
UCHAR Day;
UCHAR Month;
UCHAR Year;
UCHAR Century;
} DUMMYSTRUCTNAME;
} ERROR_TIMESTAMP, *PERROR_TIMESTAMP;
typedef struct _ERROR_GUID {
ULONG Data1;
USHORT Data2;
USHORT Data3;
UCHAR Data4[8];
} ERROR_GUID, *PERROR_GUID;
typedef ERROR_GUID _ERROR_DEVICE_GUID;
typedef _ERROR_DEVICE_GUID ERROR_DEVICE_GUID, *PERROR_DEVICE_GUID;
typedef ERROR_GUID _ERROR_PLATFORM_GUID;
typedef _ERROR_PLATFORM_GUID ERROR_PLATFORM_GUID, *PERROR_PLATFORM_GUID;
typedef union _ERROR_RECORD_VALID {
UCHAR Valid;
_ANONYMOUS_STRUCT struct {
UCHAR OemPlatformID:1;
UCHAR Reserved:7;
} DUMMYSTRUCTNAME;
} ERROR_RECORD_VALID, *PERROR_RECORD_VALID;
typedef struct _ERROR_RECORD_HEADER {
ULONGLONG Id;
ERROR_REVISION Revision;
ERROR_SEVERITY ErrorSeverity;
ERROR_RECORD_VALID Valid;
ULONG Length;
ERROR_TIMESTAMP TimeStamp;
UCHAR OemPlatformId[16];
} ERROR_RECORD_HEADER, *PERROR_RECORD_HEADER;
typedef union _ERROR_RECOVERY_INFO {
UCHAR RecoveryInfo;
_ANONYMOUS_STRUCT struct {
UCHAR Corrected:1;
UCHAR NotContained:1;
UCHAR Reset:1;
UCHAR Reserved:4;
UCHAR Valid:1;
} DUMMYSTRUCTNAME;
} ERROR_RECOVERY_INFO, *PERROR_RECOVERY_INFO;
typedef struct _ERROR_SECTION_HEADER {
ERROR_DEVICE_GUID Guid;
ERROR_REVISION Revision;
ERROR_RECOVERY_INFO RecoveryInfo;
UCHAR Reserved;
ULONG Length;
} ERROR_SECTION_HEADER, *PERROR_SECTION_HEADER;
#if !defined(__midl)
__inline
USHORT
NTAPI
GetFwMceLogProcessorNumber(
PERROR_RECORD_HEADER Log)
{
PERROR_SECTION_HEADER section = (PERROR_SECTION_HEADER)((ULONG64)Log + sizeof(*Log));
USHORT lid = (USHORT)((UCHAR)(section->Reserved));
#ifdef NONAMELESSUNION
lid |= (USHORT)((UCHAR)(Log->TimeStamp.s.Reserved) << 8);
#else
lid |= (USHORT)((UCHAR)(Log->TimeStamp.Reserved) << 8);
#endif
return( lid );
}
#endif /* !__midl */
#define ERROR_PROCESSOR_GUID {0xe429faf1, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
typedef union _ERROR_MODINFO_VALID {
ULONGLONG Valid;
_ANONYMOUS_STRUCT struct {
ULONGLONG CheckInfo:1;
ULONGLONG RequestorIdentifier:1;
ULONGLONG ResponderIdentifier:1;
ULONGLONG TargetIdentifier:1;
ULONGLONG PreciseIP:1;
ULONGLONG Reserved:59;
} DUMMYSTRUCTNAME;
} ERROR_MODINFO_VALID, *PERROR_MODINFO_VALID;
typedef enum _ERROR_CHECK_IS {
isIA64 = 0,
isIA32 = 1,
} ERROR_CHECK_IS;
typedef enum _ERROR_CACHE_CHECK_OPERATION {
CacheUnknownOp = 0,
CacheLoad = 1,
CacheStore = 2,
CacheInstructionFetch = 3,
CacheDataPrefetch = 4,
CacheSnoop = 5,
CacheCastOut = 6,
CacheMoveIn = 7,
} ERROR_CACHE_CHECK_OPERATION;
typedef enum _ERROR_CACHE_CHECK_MESI {
CacheInvalid = 0,
CacheHeldShared = 1,
CacheHeldExclusive = 2,
CacheModified = 3,
} ERROR_CACHE_CHECK_MESI;
#if (NTDDI_VERSION >= NTDDI_VISTA)
typedef union _ERROR_CACHE_CHECK {
ULONGLONG CacheCheck;
_ANONYMOUS_STRUCT struct {
ULONGLONG Operation:4;
ULONGLONG Level:2;
ULONGLONG Reserved1:2;
ULONGLONG DataLine:1;
ULONGLONG TagLine:1;
ULONGLONG DataCache:1;
ULONGLONG InstructionCache:1;
ULONGLONG MESI:3;
ULONGLONG MESIValid:1;
ULONGLONG Way:5;
ULONGLONG WayIndexValid:1;
ULONGLONG Reserved2:1;
ULONGLONG DP:1;
ULONGLONG Reserved3:8;
ULONGLONG Index:20;
ULONGLONG Reserved4:2;
ULONGLONG InstructionSet:1;
ULONGLONG InstructionSetValid:1;
ULONGLONG PrivilegeLevel:2;
ULONGLONG PrivilegeLevelValid:1;
ULONGLONG MachineCheckCorrected:1;
ULONGLONG TargetAddressValid:1;
ULONGLONG RequestIdValid:1;
ULONGLONG ResponderIdValid:1;
ULONGLONG PreciseIPValid:1;
} DUMMYSTRUCTNAME;
} ERROR_CACHE_CHECK, *PERROR_CACHE_CHECK;
# else
typedef union _ERROR_CACHE_CHECK {
ULONGLONG CacheCheck;
_ANONYMOUS_STRUCT struct {
ULONGLONG Operation:4;
ULONGLONG Level:2;
ULONGLONG Reserved1:2;
ULONGLONG DataLine:1;
ULONGLONG TagLine:1;
ULONGLONG DataCache:1;
ULONGLONG InstructionCache:1;
ULONGLONG MESI:3;
ULONGLONG MESIValid:1;
ULONGLONG Way:5;
ULONGLONG WayIndexValid:1;
ULONGLONG Reserved2:10;
ULONGLONG Index:20;
ULONGLONG Reserved3:2;
ULONGLONG InstructionSet:1;
ULONGLONG InstructionSetValid:1;
ULONGLONG PrivilegeLevel:2;
ULONGLONG PrivilegeLevelValid:1;
ULONGLONG MachineCheckCorrected:1;
ULONGLONG TargetAddressValid:1;
ULONGLONG RequestIdValid:1;
ULONGLONG ResponderIdValid:1;
ULONGLONG PreciseIPValid:1;
} DUMMYSTRUCTNAME;
} ERROR_CACHE_CHECK, *PERROR_CACHE_CHECK;
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
typedef enum _ERROR_TLB_CHECK_OPERATION {
TlbUnknownOp = 0,
TlbAccessWithLoad = 1,
TlbAccessWithStore = 2,
TlbAccessWithInstructionFetch = 3,
TlbAccessWithDataPrefetch = 4,
TlbShootDown = 5,
TlbProbe = 6,
TlbVhptFill = 7,
TlbPurge = 8,
} ERROR_TLB_CHECK_OPERATION;
typedef union _ERROR_TLB_CHECK {
ULONGLONG TlbCheck;
_ANONYMOUS_STRUCT struct {
ULONGLONG TRSlot:8;
ULONGLONG TRSlotValid:1;
ULONGLONG Reserved1:1;
ULONGLONG Level:2;
ULONGLONG Reserved2:4;
ULONGLONG DataTransReg:1;
ULONGLONG InstructionTransReg:1;
ULONGLONG DataTransCache:1;
ULONGLONG InstructionTransCache:1;
ULONGLONG Operation:4;
ULONGLONG Reserved3:30;
ULONGLONG InstructionSet:1;
ULONGLONG InstructionSetValid:1;
ULONGLONG PrivilegeLevel:2;
ULONGLONG PrivilegeLevelValid:1;
ULONGLONG MachineCheckCorrected:1;
ULONGLONG TargetAddressValid:1;
ULONGLONG RequestIdValid:1;
ULONGLONG ResponderIdValid:1;
ULONGLONG PreciseIPValid:1;
} DUMMYSTRUCTNAME;
} ERROR_TLB_CHECK, *PERROR_TLB_CHECK;
typedef enum _ERROR_BUS_CHECK_OPERATION {
BusUnknownOp = 0,
BusPartialRead = 1,
BusPartialWrite = 2,
BusFullLineRead = 3,
BusFullLineWrite = 4,
BusWriteBack = 5,
BusSnoopProbe = 6,
BusIncomingPtcG = 7,
BusWriteCoalescing = 8,
} ERROR_BUS_CHECK_OPERATION;
#if (NTDDI_VERSION >= NTDDI_VISTA)
typedef union _ERROR_BUS_CHECK {
ULONGLONG BusCheck;
_ANONYMOUS_STRUCT struct {
ULONGLONG Size:5;
ULONGLONG Internal:1;
ULONGLONG External:1;
ULONGLONG CacheTransfer:1;
ULONGLONG Type:8;
ULONGLONG Severity:5;
ULONGLONG Hierarchy:2;
ULONGLONG DP:1;
ULONGLONG Status:8;
ULONGLONG Reserved1:22;
ULONGLONG InstructionSet:1;
ULONGLONG InstructionSetValid:1;
ULONGLONG PrivilegeLevel:2;
ULONGLONG PrivilegeLevelValid:1;
ULONGLONG MachineCheckCorrected:1;
ULONGLONG TargetAddressValid:1;
ULONGLONG RequestIdValid:1;
ULONGLONG ResponderIdValid:1;
ULONGLONG PreciseIPValid:1;
} DUMMYSTRUCTNAME;
} ERROR_BUS_CHECK, *PERROR_BUS_CHECK;
#else
typedef union _ERROR_BUS_CHECK {
ULONGLONG BusCheck;
_ANONYMOUS_STRUCT struct {
ULONGLONG Size:5;
ULONGLONG Internal:1;
ULONGLONG External:1;
ULONGLONG CacheTransfer:1;
ULONGLONG Type:8;
ULONGLONG Severity:5;
ULONGLONG Hierarchy:2;
ULONGLONG Reserved1:1;
ULONGLONG Status:8;
ULONGLONG Reserved2:22;
ULONGLONG InstructionSet:1;
ULONGLONG InstructionSetValid:1;
ULONGLONG PrivilegeLevel:2;
ULONGLONG PrivilegeLevelValid:1;
ULONGLONG MachineCheckCorrected:1;
ULONGLONG TargetAddressValid:1;
ULONGLONG RequestIdValid:1;
ULONGLONG ResponderIdValid:1;
ULONGLONG PreciseIPValid:1;
} DUMMYSTRUCTNAME;
} ERROR_BUS_CHECK, *PERROR_BUS_CHECK;
#endif
typedef enum _ERROR_REGFILE_CHECK_IDENTIFIER {
RegFileUnknownId = 0,
GeneralRegisterBank1 = 1,
GeneralRegisterBank0 = 2,
FloatingPointRegister = 3,
BranchRegister = 4,
PredicateRegister = 5,
ApplicationRegister = 6,
ControlRegister = 7,
RegionRegister = 8,
ProtectionKeyRegister = 9,
DataBreakPointRegister = 10,
InstructionBreakPointRegister = 11,
PerformanceMonitorControlRegister = 12,
PerformanceMonitorDataRegister = 13,
} ERROR_REGFILE_CHECK_IDENTIFIER;
typedef enum _ERROR_REGFILE_CHECK_OPERATION {
RegFileUnknownOp = 0,
RegFileRead = 1,
RegFileWrite = 2,
} ERROR_REGFILE_CHECK_OPERATION;
typedef union _ERROR_REGFILE_CHECK {
ULONGLONG RegFileCheck;
_ANONYMOUS_STRUCT struct {
ULONGLONG Identifier:4;
ULONGLONG Operation:4;
ULONGLONG RegisterNumber:7;
ULONGLONG RegisterNumberValid:1;
ULONGLONG Reserved1:38;
ULONGLONG InstructionSet:1;
ULONGLONG InstructionSetValid:1;
ULONGLONG PrivilegeLevel:2;
ULONGLONG PrivilegeLevelValid:1;
ULONGLONG MachineCheckCorrected:1;
ULONGLONG Reserved2:3;
ULONGLONG PreciseIPValid:1;
} DUMMYSTRUCTNAME;
} ERROR_REGFILE_CHECK, *PERROR_REGFILE_CHECK;
#if (NTDDK_VERSION <= WINXP)
typedef enum _ERROR_MS_CHECK_OPERATION {
MsUnknownOp = 0,
MsReadOrLoad = 1,
MsWriteOrStore = 2
} ERROR_MS_CHECK_OPERATION;
#else
typedef enum _ERROR_MS_CHECK_OPERATION {
MsUnknownOp = 0,
MsReadOrLoad = 1,
MsWriteOrStore = 2,
MsOverTemperature = 3,
MsNormalTemperature = 4
} ERROR_MS_CHECK_OPERATION;
#endif
typedef union _ERROR_MS_CHECK {
ULONGLONG MsCheck;
_ANONYMOUS_STRUCT struct {
ULONGLONG StructureIdentifier:5;
ULONGLONG Level:3;
ULONGLONG ArrayId:4;
ULONGLONG Operation:4;
ULONGLONG Way:6;
ULONGLONG WayValid:1;
ULONGLONG IndexValid:1;
ULONGLONG Reserved1:8;
ULONGLONG Index:8;
ULONGLONG Reserved2:14;
ULONGLONG InstructionSet:1;
ULONGLONG InstructionSetValid:1;
ULONGLONG PrivilegeLevel:2;
ULONGLONG PrivilegeLevelValid:1;
ULONGLONG MachineCheckCorrected:1;
ULONGLONG TargetAddressValid:1;
ULONGLONG RequestIdValid:1;
ULONGLONG ResponderIdValid:1;
ULONGLONG PreciseIPValid:1;
} DUMMYSTRUCTNAME;
} ERROR_MS_CHECK, *PERROR_MS_CHECK;
typedef union _ERROR_CHECK_INFO {
ULONGLONG CheckInfo;
ERROR_CACHE_CHECK CacheCheck;
ERROR_TLB_CHECK TlbCheck;
ERROR_BUS_CHECK BusCheck;
ERROR_REGFILE_CHECK RegFileCheck;
ERROR_MS_CHECK MsCheck;
} ERROR_CHECK_INFO, *PERROR_CHECK_INFO;
typedef struct _ERROR_MODINFO {
ERROR_MODINFO_VALID Valid;
ERROR_CHECK_INFO CheckInfo;
ULONGLONG RequestorId;
ULONGLONG ResponderId;
ULONGLONG TargetId;
ULONGLONG PreciseIP;
} ERROR_MODINFO, *PERROR_MODINFO;
typedef union _ERROR_PROCESSOR_VALID {
ULONGLONG Valid;
_ANONYMOUS_STRUCT struct {
ULONGLONG ErrorMap:1;
ULONGLONG StateParameter:1;
ULONGLONG CRLid:1;
ULONGLONG StaticStruct:1;
ULONGLONG CacheCheckNum:4;
ULONGLONG TlbCheckNum:4;
ULONGLONG BusCheckNum:4;
ULONGLONG RegFileCheckNum:4;
ULONGLONG MsCheckNum:4;
ULONGLONG CpuIdInfo:1;
ULONGLONG Reserved:39;
} DUMMYSTRUCTNAME;
} ERROR_PROCESSOR_VALID, *PERROR_PROCESSOR_VALID;
typedef union _ERROR_PROCESSOR_ERROR_MAP {
ULONGLONG ErrorMap;
_ANONYMOUS_STRUCT struct {
ULONGLONG Cid:4;
ULONGLONG Tid:4;
ULONGLONG Eic:4;
ULONGLONG Edc:4;
ULONGLONG Eit:4;
ULONGLONG Edt:4;
ULONGLONG Ebh:4;
ULONGLONG Erf:4;
ULONGLONG Ems:16;
ULONGLONG Reserved:16;
} DUMMYSTRUCTNAME;
} ERROR_PROCESSOR_ERROR_MAP, *PERROR_PROCESSOR_ERROR_MAP;
typedef ERROR_PROCESSOR_ERROR_MAP _ERROR_PROCESSOR_LEVEL_INDEX;
typedef _ERROR_PROCESSOR_LEVEL_INDEX ERROR_PROCESSOR_LEVEL_INDEX, *PERROR_PROCESSOR_LEVEL_INDEX;
typedef union _ERROR_PROCESSOR_STATE_PARAMETER {
ULONGLONG StateParameter;
_ANONYMOUS_STRUCT struct {
ULONGLONG reserved0:2;
ULONGLONG rz:1;
ULONGLONG ra:1;
ULONGLONG me:1;
ULONGLONG mn:1;
ULONGLONG sy:1;
ULONGLONG co:1;
ULONGLONG ci:1;
ULONGLONG us:1;
ULONGLONG hd:1;
ULONGLONG tl:1;
ULONGLONG mi:1;
ULONGLONG pi:1;
ULONGLONG pm:1;
ULONGLONG dy:1;
ULONGLONG in:1;
ULONGLONG rs:1;
ULONGLONG cm:1;
ULONGLONG ex:1;
ULONGLONG cr:1;
ULONGLONG pc:1;
ULONGLONG dr:1;
ULONGLONG tr:1;
ULONGLONG rr:1;
ULONGLONG ar:1;
ULONGLONG br:1;
ULONGLONG pr:1;
ULONGLONG fp:1;
ULONGLONG b1:1;
ULONGLONG b0:1;
ULONGLONG gr:1;
ULONGLONG dsize:16;
ULONGLONG reserved1:11;
ULONGLONG cc:1;
ULONGLONG tc:1;
ULONGLONG bc:1;
ULONGLONG rc:1;
ULONGLONG uc:1;
} DUMMYSTRUCTNAME;
} ERROR_PROCESSOR_STATE_PARAMETER, *PERROR_PROCESSOR_STATE_PARAMETER;
typedef union _PROCESSOR_LOCAL_ID {
ULONGLONG LocalId;
_ANONYMOUS_STRUCT struct {
ULONGLONG reserved:16;
ULONGLONG eid:8;
ULONGLONG id:8;
ULONGLONG ignored:32;
} DUMMYSTRUCTNAME;
} PROCESSOR_LOCAL_ID, *PPROCESSOR_LOCAL_ID;
typedef struct _ERROR_PROCESSOR_MS {
ULONGLONG MsError[1];
} ERROR_PROCESSOR_MS, *PERROR_PROCESSOR_MS;
typedef struct _ERROR_PROCESSOR_CPUID_INFO {
ULONGLONG CpuId0;
ULONGLONG CpuId1;
ULONGLONG CpuId2;
ULONGLONG CpuId3;
ULONGLONG CpuId4;
ULONGLONG Reserved;
} ERROR_PROCESSOR_CPUID_INFO, *PERROR_PROCESSOR_CPUID_INFO;
typedef union _ERROR_PROCESSOR_STATIC_INFO_VALID {
ULONGLONG Valid;
_ANONYMOUS_STRUCT struct {
ULONGLONG MinState:1;
ULONGLONG BR:1;
ULONGLONG CR:1;
ULONGLONG AR:1;
ULONGLONG RR:1;
ULONGLONG FR:1;
ULONGLONG Reserved:58;
} DUMMYSTRUCTNAME;
} ERROR_PROCESSOR_STATIC_INFO_VALID, *PERROR_PROCESSOR_STATIC_INFO_VALID;
typedef struct _ERROR_PROCESSOR_STATIC_INFO {
ERROR_PROCESSOR_STATIC_INFO_VALID Valid;
UCHAR MinState[1024];
ULONGLONG BR[8];
ULONGLONG CR[128];
ULONGLONG AR[128];
ULONGLONG RR[8];
ULONGLONG FR[2 * 128];
} ERROR_PROCESSOR_STATIC_INFO, *PERROR_PROCESSOR_STATIC_INFO;
typedef struct _ERROR_PROCESSOR {
ERROR_SECTION_HEADER Header;
ERROR_PROCESSOR_VALID Valid;
ERROR_PROCESSOR_ERROR_MAP ErrorMap;
ERROR_PROCESSOR_STATE_PARAMETER StateParameter;
PROCESSOR_LOCAL_ID CRLid;
} ERROR_PROCESSOR, *PERROR_PROCESSOR;
#define ERROR_PROCESSOR_STATE_PARAMETER_CACHE_CHECK_SHIFT 59
#define ERROR_PROCESSOR_STATE_PARAMETER_CACHE_CHECK_MASK 0x1
#define ERROR_PROCESSOR_STATE_PARAMETER_TLB_CHECK_SHIFT 60
#define ERROR_PROCESSOR_STATE_PARAMETER_TLB_CHECK_MASK 0x1
#define ERROR_PROCESSOR_STATE_PARAMETER_BUS_CHECK_SHIFT 61
#define ERROR_PROCESSOR_STATE_PARAMETER_BUS_CHECK_MASK 0x1
#define ERROR_PROCESSOR_STATE_PARAMETER_REG_CHECK_SHIFT 62
#define ERROR_PROCESSOR_STATE_PARAMETER_REG_CHECK_MASK 0x1
#define ERROR_PROCESSOR_STATE_PARAMETER_MICROARCH_CHECK_SHIFT 63
#define ERROR_PROCESSOR_STATE_PARAMETER_MICROARCH_CHECK_MASK 0x1
#define ERROR_PROCESSOR_STATE_PARAMETER_UNKNOWN_CHECK_SHIFT ERROR_PROCESSOR_STATE_PARAMETER_MICROARCH_CHECK_SHIFT
#define ERROR_PROCESSOR_STATE_PARAMETER_UNKNOWN_CHECK_MASK ERROR_PROCESSOR_STATE_PARAMETER_MICROARCH_CHECK_MASK
typedef enum _ERR_TYPES {
ERR_INTERNAL = 1,
ERR_BUS = 16,
ERR_MEM = 4,
ERR_TLB = 5,
ERR_CACHE = 6,
ERR_FUNCTION = 7,
ERR_SELFTEST = 8,
ERR_FLOW = 9,
ERR_MAP = 17,
ERR_IMPROPER = 18,
ERR_UNIMPL = 19,
ERR_LOL = 20,
ERR_RESPONSE = 21,
ERR_PARITY = 22,
ERR_PROTOCOL = 23,
ERR_ERROR = 24,
ERR_TIMEOUT = 25,
ERR_POISONED = 26,
} _ERR_TYPE;
typedef union _ERROR_STATUS {
ULONGLONG Status;
_ANONYMOUS_STRUCT struct {
ULONGLONG Reserved0:8;
ULONGLONG Type:8;
ULONGLONG Address:1;
ULONGLONG Control:1;
ULONGLONG Data:1;
ULONGLONG Responder:1;
ULONGLONG Requestor:1;
ULONGLONG FirstError:1;
ULONGLONG Overflow:1;
ULONGLONG Reserved1:41;
} DUMMYSTRUCTNAME;
} ERROR_STATUS, *PERROR_STATUS;
typedef struct _ERROR_OEM_DATA {
USHORT Length;
} ERROR_OEM_DATA, *PERROR_OEM_DATA;
typedef union _ERROR_BUS_SPECIFIC_DATA {
ULONGLONG BusSpecificData;
_ANONYMOUS_STRUCT struct {
ULONGLONG LockAsserted:1;
ULONGLONG DeferLogged:1;
ULONGLONG IOQEmpty:1;
ULONGLONG DeferredTransaction:1;
ULONGLONG RetriedTransaction:1;
ULONGLONG MemoryClaimedTransaction:1;
ULONGLONG IOClaimedTransaction:1;
ULONGLONG ResponseParitySignal:1;
ULONGLONG DeferSignal:1;
ULONGLONG HitMSignal:1;
ULONGLONG HitSignal:1;
ULONGLONG RequestBusFirstCycle:6;
ULONGLONG RequestBusSecondCycle:6;
ULONGLONG AddressParityBusFirstCycle:2;
ULONGLONG AddressParityBusSecondCycle:2;
ULONGLONG ResponseBus:3;
ULONGLONG RequestParitySignalFirstCycle:1;
ULONGLONG RequestParitySignalSecondCycle:1;
ULONGLONG Reserved:32;
} DUMMYSTRUCTNAME;
} ERROR_BUS_SPECIFIC_DATA, *PERROR_BUS_SPECIFIC_DATA;
#define ERROR_MEMORY_GUID {0xe429faf2, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
typedef union _ERROR_MEMORY_VALID {
ULONGLONG Valid;
_ANONYMOUS_STRUCT struct {
ULONGLONG ErrorStatus:1;
ULONGLONG PhysicalAddress:1;
ULONGLONG AddressMask:1;
ULONGLONG Node:1;
ULONGLONG Card:1;
ULONGLONG Module:1;
ULONGLONG Bank:1;
ULONGLONG Device:1;
ULONGLONG Row:1;
ULONGLONG Column:1;
ULONGLONG BitPosition:1;
ULONGLONG RequestorId:1;
ULONGLONG ResponderId:1;
ULONGLONG TargetId:1;
ULONGLONG BusSpecificData:1;
ULONGLONG OemId:1;
ULONGLONG OemData:1;
ULONGLONG Reserved:47;
} DUMMYSTRUCTNAME;
} ERROR_MEMORY_VALID, *PERROR_MEMORY_VALID;
typedef struct _ERROR_MEMORY {
ERROR_SECTION_HEADER Header;
ERROR_MEMORY_VALID Valid;
ERROR_STATUS ErrorStatus;
ULONGLONG PhysicalAddress;
ULONGLONG PhysicalAddressMask;
USHORT Node;
USHORT Card;
USHORT Module;
USHORT Bank;
USHORT Device;
USHORT Row;
USHORT Column;
USHORT BitPosition;
ULONGLONG RequestorId;
ULONGLONG ResponderId;
ULONGLONG TargetId;
ULONGLONG BusSpecificData;
UCHAR OemId[16];
ERROR_OEM_DATA OemData;
} ERROR_MEMORY, *PERROR_MEMORY;
#define ERROR_PCI_BUS_GUID {0xe429faf4, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
typedef union _ERROR_PCI_BUS_VALID {
ULONGLONG Valid;
_ANONYMOUS_STRUCT struct {
ULONGLONG ErrorStatus:1;
ULONGLONG ErrorType:1;
ULONGLONG Id:1;
ULONGLONG Address:1;
ULONGLONG Data:1;
ULONGLONG CmdType:1;
ULONGLONG RequestorId:1;
ULONGLONG ResponderId:1;
ULONGLONG TargetId:1;
ULONGLONG OemId:1;
ULONGLONG OemData:1;
ULONGLONG Reserved:53;
} DUMMYSTRUCTNAME;
} ERROR_PCI_BUS_VALID, *PERROR_PCI_BUS_VALID;
typedef struct _ERROR_PCI_BUS_TYPE {
UCHAR Type;
UCHAR Reserved;
} ERROR_PCI_BUS_TYPE, *PERROR_PCI_BUS_TYPE;
#define PciBusUnknownError ((UCHAR)0)
#define PciBusDataParityError ((UCHAR)1)
#define PciBusSystemError ((UCHAR)2)
#define PciBusMasterAbort ((UCHAR)3)
#define PciBusTimeOut ((UCHAR)4)
#define PciMasterDataParityError ((UCHAR)5)
#define PciAddressParityError ((UCHAR)6)
#define PciCommandParityError ((UCHAR)7)
typedef struct _ERROR_PCI_BUS_ID {
UCHAR BusNumber;
UCHAR SegmentNumber;
} ERROR_PCI_BUS_ID, *PERROR_PCI_BUS_ID;
typedef struct _ERROR_PCI_BUS {
ERROR_SECTION_HEADER Header;
ERROR_PCI_BUS_VALID Valid;
ERROR_STATUS ErrorStatus;
ERROR_PCI_BUS_TYPE Type;
ERROR_PCI_BUS_ID Id;
UCHAR Reserved[4];
ULONGLONG Address;
ULONGLONG Data;
ULONGLONG CmdType;
ULONGLONG RequestorId;
ULONGLONG ResponderId;
ULONGLONG TargetId;
UCHAR OemId[16];
ERROR_OEM_DATA OemData;
} ERROR_PCI_BUS, *PERROR_PCI_BUS;
#define ERROR_PCI_COMPONENT_GUID {0xe429faf6, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
typedef union _ERROR_PCI_COMPONENT_VALID {
ULONGLONG Valid;
_ANONYMOUS_STRUCT struct {
ULONGLONG ErrorStatus:1;
ULONGLONG Info:1;
ULONGLONG MemoryMappedRegistersPairs:1;
ULONGLONG ProgrammedIORegistersPairs:1;
ULONGLONG RegistersDataPairs:1;
ULONGLONG OemData:1;
ULONGLONG Reserved:58;
} DUMMYSTRUCTNAME;
} ERROR_PCI_COMPONENT_VALID, *PERROR_PCI_COMPONENT_VALID;
typedef struct _ERROR_PCI_COMPONENT_INFO {
USHORT VendorId;
USHORT DeviceId;
UCHAR ClassCodeInterface;
UCHAR ClassCodeSubClass;
UCHAR ClassCodeBaseClass;
UCHAR FunctionNumber;
UCHAR DeviceNumber;
UCHAR BusNumber;
UCHAR SegmentNumber;
UCHAR Reserved0;
ULONG Reserved1;
} ERROR_PCI_COMPONENT_INFO, *PERROR_PCI_COMPONENT_INFO;
typedef struct _ERROR_PCI_COMPONENT {
ERROR_SECTION_HEADER Header;
ERROR_PCI_COMPONENT_VALID Valid;
ERROR_STATUS ErrorStatus;
ERROR_PCI_COMPONENT_INFO Info;
ULONG MemoryMappedRegistersPairs;
ULONG ProgrammedIORegistersPairs;
} ERROR_PCI_COMPONENT, *PERROR_PCI_COMPONENT;
#define ERROR_SYSTEM_EVENT_LOG_GUID {0xe429faf3, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
typedef union _ERROR_SYSTEM_EVENT_LOG_VALID {
ULONGLONG Valid;
_ANONYMOUS_STRUCT struct {
ULONGLONG RecordId:1;
ULONGLONG RecordType:1;
ULONGLONG GeneratorId:1;
ULONGLONG EVMRev:1;
ULONGLONG SensorType:1;
ULONGLONG SensorNum:1;
ULONGLONG EventDirType:1;
ULONGLONG EventData1:1;
ULONGLONG EventData2:1;
ULONGLONG EventData3:1;
ULONGLONG Reserved:54;
} DUMMYSTRUCTNAME;
} ERROR_SYSTEM_EVENT_LOG_VALID, *PSYSTEM_EVENT_LOG_VALID;
typedef struct _ERROR_SYSTEM_EVENT_LOG {
ERROR_SECTION_HEADER Header;
ERROR_SYSTEM_EVENT_LOG_VALID Valid;
USHORT RecordId;
UCHAR RecordType;
ULONG TimeStamp;
USHORT GeneratorId;
UCHAR EVMRevision;
UCHAR SensorType;
UCHAR SensorNumber;
UCHAR EventDir;
UCHAR Data1;
UCHAR Data2;
UCHAR Data3;
} ERROR_SYSTEM_EVENT_LOG, *PERROR_SYSTEM_EVENT_LOG;
#define ERROR_SMBIOS_GUID {0xe429faf5, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
typedef union _ERROR_SMBIOS_VALID {
ULONGLONG Valid;
_ANONYMOUS_STRUCT struct {
ULONGLONG EventType:1;
ULONGLONG Length:1;
ULONGLONG TimeStamp:1;
ULONGLONG OemData:1;
ULONGLONG Reserved:60;
} DUMMYSTRUCTNAME;
} ERROR_SMBIOS_VALID, *PERROR_SMBIOS_VALID;
typedef UCHAR ERROR_SMBIOS_EVENT_TYPE, *PERROR_SMBIOS_EVENT_TYPE;
typedef struct _ERROR_SMBIOS {
ERROR_SECTION_HEADER Header;
ERROR_SMBIOS_VALID Valid;
ERROR_SMBIOS_EVENT_TYPE EventType;
UCHAR Length;
ERROR_TIMESTAMP TimeStamp;
ERROR_OEM_DATA OemData;
} ERROR_SMBIOS, *PERROR_SMBIOS;
#define ERROR_PLATFORM_SPECIFIC_GUID {0xe429faf7, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
typedef union _ERROR_PLATFORM_SPECIFIC_VALID {
ULONGLONG Valid;
_ANONYMOUS_STRUCT struct {
ULONGLONG ErrorStatus:1;
ULONGLONG RequestorId:1;
ULONGLONG ResponderId:1;
ULONGLONG TargetId:1;
ULONGLONG BusSpecificData:1;
ULONGLONG OemId:1;
ULONGLONG OemData:1;
ULONGLONG OemDevicePath:1;
ULONGLONG Reserved:56;
} DUMMYSTRUCTNAME;
} ERROR_PLATFORM_SPECIFIC_VALID, *PERROR_PLATFORM_SPECIFIC_VALID;
typedef struct _ERROR_PLATFORM_SPECIFIC {
ERROR_SECTION_HEADER Header;
ERROR_PLATFORM_SPECIFIC_VALID Valid;
ERROR_STATUS ErrorStatus;
ULONGLONG RequestorId;
ULONGLONG ResponderId;
ULONGLONG TargetId;
ERROR_BUS_SPECIFIC_DATA BusSpecificData;
UCHAR OemId[16];
ERROR_OEM_DATA OemData;
} ERROR_PLATFORM_SPECIFIC, *PERROR_PLATFORM_SPECIFIC;
#define ERROR_PLATFORM_BUS_GUID {0xe429faf9, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
typedef union _ERROR_PLATFORM_BUS_VALID {
ULONGLONG Valid;
_ANONYMOUS_STRUCT struct {
ULONGLONG ErrorStatus:1;
ULONGLONG RequestorId:1;
ULONGLONG ResponderId:1;
ULONGLONG TargetId:1;
ULONGLONG BusSpecificData:1;
ULONGLONG OemId:1;
ULONGLONG OemData:1;
ULONGLONG OemDevicePath:1;
ULONGLONG Reserved:56;
} DUMMYSTRUCTNAME;
} ERROR_PLATFORM_BUS_VALID, *PERROR_PLATFORM_BUS_VALID;
typedef struct _ERROR_PLATFORM_BUS {
ERROR_SECTION_HEADER Header;
ERROR_PLATFORM_BUS_VALID Valid;
ERROR_STATUS ErrorStatus;
ULONGLONG RequestorId;
ULONGLONG ResponderId;
ULONGLONG TargetId;
ERROR_BUS_SPECIFIC_DATA BusSpecificData;
UCHAR OemId[16];
ERROR_OEM_DATA OemData;
} ERROR_PLATFORM_BUS, *PERROR_PLATFORM_BUS;
#define ERROR_PLATFORM_HOST_CONTROLLER_GUID {0xe429faf8, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
typedef union _ERROR_PLATFORM_HOST_CONTROLLER_VALID {
ULONGLONG Valid;
_ANONYMOUS_STRUCT struct {
ULONGLONG ErrorStatus:1;
ULONGLONG RequestorId:1;
ULONGLONG ResponderId:1;
ULONGLONG TargetId:1;
ULONGLONG BusSpecificData:1;
ULONGLONG OemId:1;
ULONGLONG OemData:1;
ULONGLONG OemDevicePath:1;
ULONGLONG Reserved:56;
} DUMMYSTRUCTNAME;
} ERROR_PLATFORM_HOST_CONTROLLER_VALID, *PERROR_PLATFORM_HOST_CONTROLLER_VALID;
typedef struct _ERROR_PLATFORM_HOST_CONTROLLER {
ERROR_SECTION_HEADER Header;
ERROR_PCI_COMPONENT_VALID Valid;
ERROR_STATUS ErrorStatus;
ULONGLONG RequestorId;
ULONGLONG ResponderId;
ULONGLONG TargetId;
ERROR_BUS_SPECIFIC_DATA BusSpecificData;
UCHAR OemId[16];
ERROR_OEM_DATA OemData;
} ERROR_PLATFORM_HOST_CONTROLLER, *PERROR_PLATFORM_HOST_CONTROLLER;
typedef ERROR_RECORD_HEADER ERROR_LOGRECORD, *PERROR_LOGRECORD;
typedef ERROR_RECORD_HEADER MCA_EXCEPTION, *PMCA_EXCEPTION;
typedef ERROR_RECORD_HEADER CMC_EXCEPTION, *PCMC_EXCEPTION;
typedef ERROR_RECORD_HEADER CPE_EXCEPTION, *PCPE_EXCEPTION;
#if (NTDDI_VERSION > NTDDI_WINXP)
typedef ERROR_RECORD_HEADER INIT_EXCEPTION, *PINIT_EXCEPTION;
#endif
#endif /* defined(_IA64_) */
#endif /* defined(_X86_) || defined(_IA64_) || defined(_AMD64_) */