#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_) */