Home | History | Annotate | Download | only in ddk
      1 #pragma once
      2 
      3 #if defined(_X86_) || defined(_IA64_) || defined(_AMD64_)
      4 
      5 typedef union _MCI_ADDR {
      6   _ANONYMOUS_STRUCT struct {
      7     ULONG Address;
      8     ULONG Reserved;
      9   } DUMMYSTRUCTNAME;
     10   ULONGLONG QuadPart;
     11 } MCI_ADDR, *PMCI_ADDR;
     12 
     13 typedef enum {
     14   HAL_MCE_RECORD,
     15   HAL_MCA_RECORD
     16 } MCA_EXCEPTION_TYPE;
     17 
     18 #if defined(_AMD64_)
     19 
     20 #if (NTDDI_VERSION <= NTDDI_WINXP)
     21 
     22 typedef union _MCI_STATS {
     23   struct {
     24     USHORT McaCod;
     25     USHORT ModelErrorCode;
     26     ULONG OtherInfo:25;
     27     ULONG Damage:1;
     28     ULONG AddressValid:1;
     29     ULONG MiscValid:1;
     30     ULONG Enabled:1;
     31     ULONG Uncorrected:1;
     32     ULONG OverFlow:1;
     33     ULONG Valid:1;
     34   } MciStatus;
     35   ULONG64 QuadPart;
     36 } MCI_STATS, *PMCI_STATS;
     37 
     38 #else
     39 
     40 typedef union _MCI_STATS {
     41   struct {
     42     USHORT McaErrorCode;
     43     USHORT ModelErrorCode;
     44     ULONG OtherInformation:25;
     45     ULONG ContextCorrupt:1;
     46     ULONG AddressValid:1;
     47     ULONG MiscValid:1;
     48     ULONG ErrorEnabled:1;
     49     ULONG UncorrectedError:1;
     50     ULONG StatusOverFlow:1;
     51     ULONG Valid:1;
     52   } MciStatus;
     53   ULONG64 QuadPart;
     54 } MCI_STATS, *PMCI_STATS;
     55 
     56 #endif /* (NTDDI_VERSION <= NTDDI_WINXP) */
     57 
     58 #endif /* defined(_AMD64_) */
     59 
     60 #if defined(_X86_)
     61 typedef union _MCI_STATS {
     62   struct {
     63     USHORT McaCod;
     64     USHORT MsCod;
     65     ULONG OtherInfo:25;
     66     ULONG Damage:1;
     67     ULONG AddressValid:1;
     68     ULONG MiscValid:1;
     69     ULONG Enabled:1;
     70     ULONG UnCorrected:1;
     71     ULONG OverFlow:1;
     72     ULONG Valid:1;
     73   } MciStats;
     74   ULONGLONG QuadPart;
     75 } MCI_STATS, *PMCI_STATS;
     76 #endif
     77 
     78 #define MCA_EXTREG_V2MAX               24
     79 
     80 #if defined(_X86_) || defined(_AMD64_)
     81 
     82 #if (NTDDI_VERSION >= NTDDI_WINXP)
     83 
     84 typedef struct _MCA_EXCEPTION {
     85   ULONG VersionNumber;
     86   MCA_EXCEPTION_TYPE ExceptionType;
     87   LARGE_INTEGER TimeStamp;
     88   ULONG ProcessorNumber;
     89   ULONG Reserved1;
     90   union {
     91     struct {
     92       UCHAR BankNumber;
     93       UCHAR Reserved2[7];
     94       MCI_STATS Status;
     95       MCI_ADDR Address;
     96       ULONGLONG Misc;
     97     } Mca;
     98     struct {
     99       ULONGLONG Address;
    100       ULONGLONG Type;
    101     } Mce;
    102   } u;
    103   ULONG ExtCnt;
    104   ULONG Reserved3;
    105   ULONGLONG ExtReg[MCA_EXTREG_V2MAX];
    106 } MCA_EXCEPTION, *PMCA_EXCEPTION;
    107 
    108 #else
    109 
    110 typedef struct _MCA_EXCEPTION {
    111   ULONG VersionNumber;
    112   MCA_EXCEPTION_TYPE ExceptionType;
    113   LARGE_INTEGER TimeStamp;
    114   ULONG ProcessorNumber;
    115   ULONG Reserved1;
    116   union {
    117     struct {
    118       UCHAR BankNumber;
    119       UCHAR Reserved2[7];
    120       MCI_STATS Status;
    121       MCI_ADDR Address;
    122       ULONGLONG Misc;
    123     } Mca;
    124     struct {
    125       ULONGLONG Address;
    126       ULONGLONG Type;
    127     } Mce;
    128   } u;
    129 } MCA_EXCEPTION, *PMCA_EXCEPTION;
    130 
    131 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
    132 
    133 typedef MCA_EXCEPTION CMC_EXCEPTION, *PCMC_EXCEPTION;
    134 typedef MCA_EXCEPTION CPE_EXCEPTION, *PCPE_EXCEPTION;
    135 
    136 #if (NTDDI_VERSION >= NTDDI_WINXP)
    137 #define MCA_EXCEPTION_V1_SIZE FIELD_OFFSET(MCA_EXCEPTION, ExtCnt)
    138 #define MCA_EXCEPTION_V2_SIZE sizeof(struct _MCA_EXCEPTION)
    139 #endif
    140 
    141 #endif /* defined(_X86_) || defined(_AMD64_) */
    142 
    143 #if defined(_AMD64_) || defined(_IA64_)
    144 
    145 typedef UCHAR ERROR_SEVERITY, *PERROR_SEVERITY;
    146 
    147 typedef enum _ERROR_SEVERITY_VALUE {
    148   ErrorRecoverable = 0,
    149   ErrorFatal = 1,
    150   ErrorCorrected = 2,
    151   ErrorOthers = 3,
    152 } ERROR_SEVERITY_VALUE;
    153 
    154 #endif
    155 
    156 #if defined(_IA64_)
    157 
    158 typedef union _ERROR_REVISION {
    159   USHORT Revision;
    160   _ANONYMOUS_STRUCT struct {
    161     UCHAR Minor;
    162     UCHAR Major;
    163   } DUMMYSTRUCTNAME;
    164 } ERROR_REVISION, *PERROR_REVISION;
    165 
    166 #if (NTDDI_VERSION > NTDDI_WINXP)
    167 #define ERROR_MAJOR_REVISION_SAL_03_00      0
    168 #define ERROR_MINOR_REVISION_SAL_03_00      2
    169 #define ERROR_REVISION_SAL_03_00 {ERROR_MINOR_REVISION_SAL_03_00,ERROR_MAJOR_REVISION_SAL_03_00}
    170 #define ERROR_FIXED_SECTION_REVISION {2,0}
    171 #else
    172 #define ERROR_REVISION_SAL_03_00 {2,0}
    173 #endif /* (NTDDI_VERSION > NTDDI_WINXP) */
    174 
    175 typedef union _ERROR_TIMESTAMP {
    176   ULONGLONG TimeStamp;
    177   _ANONYMOUS_STRUCT struct {
    178     UCHAR Seconds;
    179     UCHAR Minutes;
    180     UCHAR Hours;
    181     UCHAR Reserved;
    182     UCHAR Day;
    183     UCHAR Month;
    184     UCHAR Year;
    185     UCHAR Century;
    186   } DUMMYSTRUCTNAME;
    187 } ERROR_TIMESTAMP, *PERROR_TIMESTAMP;
    188 
    189 typedef struct _ERROR_GUID {
    190   ULONG Data1;
    191   USHORT Data2;
    192   USHORT Data3;
    193   UCHAR Data4[8];
    194 } ERROR_GUID, *PERROR_GUID;
    195 
    196 typedef ERROR_GUID            _ERROR_DEVICE_GUID;
    197 typedef _ERROR_DEVICE_GUID    ERROR_DEVICE_GUID, *PERROR_DEVICE_GUID;
    198 
    199 typedef ERROR_GUID            _ERROR_PLATFORM_GUID;
    200 typedef _ERROR_PLATFORM_GUID  ERROR_PLATFORM_GUID, *PERROR_PLATFORM_GUID;
    201 
    202 typedef union _ERROR_RECORD_VALID {
    203   UCHAR Valid;
    204   _ANONYMOUS_STRUCT struct {
    205     UCHAR OemPlatformID:1;
    206     UCHAR Reserved:7;
    207   } DUMMYSTRUCTNAME;
    208 } ERROR_RECORD_VALID, *PERROR_RECORD_VALID;
    209 
    210 typedef struct _ERROR_RECORD_HEADER {
    211   ULONGLONG Id;
    212   ERROR_REVISION Revision;
    213   ERROR_SEVERITY ErrorSeverity;
    214   ERROR_RECORD_VALID Valid;
    215   ULONG Length;
    216   ERROR_TIMESTAMP TimeStamp;
    217   UCHAR OemPlatformId[16];
    218 } ERROR_RECORD_HEADER, *PERROR_RECORD_HEADER;
    219 
    220 typedef union _ERROR_RECOVERY_INFO {
    221   UCHAR RecoveryInfo;
    222   _ANONYMOUS_STRUCT struct {
    223     UCHAR Corrected:1;
    224     UCHAR NotContained:1;
    225     UCHAR Reset:1;
    226     UCHAR Reserved:4;
    227     UCHAR Valid:1;
    228   } DUMMYSTRUCTNAME;
    229 } ERROR_RECOVERY_INFO, *PERROR_RECOVERY_INFO;
    230 
    231 typedef struct _ERROR_SECTION_HEADER {
    232   ERROR_DEVICE_GUID Guid;
    233   ERROR_REVISION Revision;
    234   ERROR_RECOVERY_INFO RecoveryInfo;
    235   UCHAR Reserved;
    236   ULONG Length;
    237 } ERROR_SECTION_HEADER, *PERROR_SECTION_HEADER;
    238 
    239 #if !defined(__midl)
    240 __inline
    241 USHORT
    242 NTAPI
    243 GetFwMceLogProcessorNumber(
    244   PERROR_RECORD_HEADER Log)
    245 {
    246   PERROR_SECTION_HEADER section = (PERROR_SECTION_HEADER)((ULONG64)Log + sizeof(*Log));
    247   USHORT lid = (USHORT)((UCHAR)(section->Reserved));
    248 #ifdef NONAMELESSUNION
    249   lid |= (USHORT)((UCHAR)(Log->TimeStamp.s.Reserved) << 8);
    250 #else
    251   lid |= (USHORT)((UCHAR)(Log->TimeStamp.Reserved) << 8);
    252 #endif
    253   return( lid );
    254 }
    255 #endif /* !__midl */
    256 
    257 #define ERROR_PROCESSOR_GUID {0xe429faf1, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
    258 
    259 typedef union _ERROR_MODINFO_VALID {
    260   ULONGLONG Valid;
    261   _ANONYMOUS_STRUCT struct {
    262     ULONGLONG CheckInfo:1;
    263     ULONGLONG RequestorIdentifier:1;
    264     ULONGLONG ResponderIdentifier:1;
    265     ULONGLONG TargetIdentifier:1;
    266     ULONGLONG PreciseIP:1;
    267     ULONGLONG Reserved:59;
    268   } DUMMYSTRUCTNAME;
    269 } ERROR_MODINFO_VALID, *PERROR_MODINFO_VALID;
    270 
    271 typedef enum _ERROR_CHECK_IS {
    272   isIA64 = 0,
    273   isIA32 = 1,
    274 } ERROR_CHECK_IS;
    275 
    276 typedef enum _ERROR_CACHE_CHECK_OPERATION {
    277   CacheUnknownOp = 0,
    278   CacheLoad = 1,
    279   CacheStore = 2,
    280   CacheInstructionFetch = 3,
    281   CacheDataPrefetch = 4,
    282   CacheSnoop = 5,
    283   CacheCastOut = 6,
    284   CacheMoveIn = 7,
    285 } ERROR_CACHE_CHECK_OPERATION;
    286 
    287 typedef enum _ERROR_CACHE_CHECK_MESI {
    288   CacheInvalid = 0,
    289   CacheHeldShared = 1,
    290   CacheHeldExclusive = 2,
    291   CacheModified = 3,
    292 } ERROR_CACHE_CHECK_MESI;
    293 
    294 #if (NTDDI_VERSION >= NTDDI_VISTA)
    295 
    296 typedef union _ERROR_CACHE_CHECK {
    297   ULONGLONG CacheCheck;
    298   _ANONYMOUS_STRUCT struct {
    299     ULONGLONG Operation:4;
    300     ULONGLONG Level:2;
    301     ULONGLONG Reserved1:2;
    302     ULONGLONG DataLine:1;
    303     ULONGLONG TagLine:1;
    304     ULONGLONG DataCache:1;
    305     ULONGLONG InstructionCache:1;
    306     ULONGLONG MESI:3;
    307     ULONGLONG MESIValid:1;
    308     ULONGLONG Way:5;
    309     ULONGLONG WayIndexValid:1;
    310     ULONGLONG Reserved2:1;
    311     ULONGLONG DP:1;
    312     ULONGLONG Reserved3:8;
    313     ULONGLONG Index:20;
    314     ULONGLONG Reserved4:2;
    315     ULONGLONG InstructionSet:1;
    316     ULONGLONG InstructionSetValid:1;
    317     ULONGLONG PrivilegeLevel:2;
    318     ULONGLONG PrivilegeLevelValid:1;
    319     ULONGLONG MachineCheckCorrected:1;
    320     ULONGLONG TargetAddressValid:1;
    321     ULONGLONG RequestIdValid:1;
    322     ULONGLONG ResponderIdValid:1;
    323     ULONGLONG PreciseIPValid:1;
    324   } DUMMYSTRUCTNAME;
    325 } ERROR_CACHE_CHECK, *PERROR_CACHE_CHECK;
    326 
    327 # else
    328 
    329 typedef union _ERROR_CACHE_CHECK {
    330   ULONGLONG CacheCheck;
    331   _ANONYMOUS_STRUCT struct {
    332     ULONGLONG Operation:4;
    333     ULONGLONG Level:2;
    334     ULONGLONG Reserved1:2;
    335     ULONGLONG DataLine:1;
    336     ULONGLONG TagLine:1;
    337     ULONGLONG DataCache:1;
    338     ULONGLONG InstructionCache:1;
    339     ULONGLONG MESI:3;
    340     ULONGLONG MESIValid:1;
    341     ULONGLONG Way:5;
    342     ULONGLONG WayIndexValid:1;
    343     ULONGLONG Reserved2:10;
    344     ULONGLONG Index:20;
    345     ULONGLONG Reserved3:2;
    346     ULONGLONG InstructionSet:1;
    347     ULONGLONG InstructionSetValid:1;
    348     ULONGLONG PrivilegeLevel:2;
    349     ULONGLONG PrivilegeLevelValid:1;
    350     ULONGLONG MachineCheckCorrected:1;
    351     ULONGLONG TargetAddressValid:1;
    352     ULONGLONG RequestIdValid:1;
    353     ULONGLONG ResponderIdValid:1;
    354     ULONGLONG PreciseIPValid:1;
    355   } DUMMYSTRUCTNAME;
    356 } ERROR_CACHE_CHECK, *PERROR_CACHE_CHECK;
    357 
    358 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
    359 
    360 typedef enum _ERROR_TLB_CHECK_OPERATION {
    361   TlbUnknownOp = 0,
    362   TlbAccessWithLoad = 1,
    363   TlbAccessWithStore = 2,
    364   TlbAccessWithInstructionFetch = 3,
    365   TlbAccessWithDataPrefetch = 4,
    366   TlbShootDown = 5,
    367   TlbProbe = 6,
    368   TlbVhptFill = 7,
    369   TlbPurge = 8,
    370 } ERROR_TLB_CHECK_OPERATION;
    371 
    372 typedef union _ERROR_TLB_CHECK {
    373   ULONGLONG TlbCheck;
    374   _ANONYMOUS_STRUCT struct {
    375     ULONGLONG TRSlot:8;
    376     ULONGLONG TRSlotValid:1;
    377     ULONGLONG Reserved1:1;
    378     ULONGLONG Level:2;
    379     ULONGLONG Reserved2:4;
    380     ULONGLONG DataTransReg:1;
    381     ULONGLONG InstructionTransReg:1;
    382     ULONGLONG DataTransCache:1;
    383     ULONGLONG InstructionTransCache:1;
    384     ULONGLONG Operation:4;
    385     ULONGLONG Reserved3:30;
    386     ULONGLONG InstructionSet:1;
    387     ULONGLONG InstructionSetValid:1;
    388     ULONGLONG PrivilegeLevel:2;
    389     ULONGLONG PrivilegeLevelValid:1;
    390     ULONGLONG MachineCheckCorrected:1;
    391     ULONGLONG TargetAddressValid:1;
    392     ULONGLONG RequestIdValid:1;
    393     ULONGLONG ResponderIdValid:1;
    394     ULONGLONG PreciseIPValid:1;
    395   } DUMMYSTRUCTNAME;
    396 } ERROR_TLB_CHECK, *PERROR_TLB_CHECK;
    397 
    398 typedef enum _ERROR_BUS_CHECK_OPERATION {
    399   BusUnknownOp = 0,
    400   BusPartialRead = 1,
    401   BusPartialWrite = 2,
    402   BusFullLineRead = 3,
    403   BusFullLineWrite = 4,
    404   BusWriteBack = 5,
    405   BusSnoopProbe = 6,
    406   BusIncomingPtcG = 7,
    407   BusWriteCoalescing = 8,
    408 } ERROR_BUS_CHECK_OPERATION;
    409 
    410 #if (NTDDI_VERSION >= NTDDI_VISTA)
    411 
    412 typedef union _ERROR_BUS_CHECK {
    413   ULONGLONG BusCheck;
    414   _ANONYMOUS_STRUCT struct {
    415     ULONGLONG Size:5;
    416     ULONGLONG Internal:1;
    417     ULONGLONG External:1;
    418     ULONGLONG CacheTransfer:1;
    419     ULONGLONG Type:8;
    420     ULONGLONG Severity:5;
    421     ULONGLONG Hierarchy:2;
    422     ULONGLONG DP:1;
    423     ULONGLONG Status:8;
    424     ULONGLONG Reserved1:22;
    425     ULONGLONG InstructionSet:1;
    426     ULONGLONG InstructionSetValid:1;
    427     ULONGLONG PrivilegeLevel:2;
    428     ULONGLONG PrivilegeLevelValid:1;
    429     ULONGLONG MachineCheckCorrected:1;
    430     ULONGLONG TargetAddressValid:1;
    431     ULONGLONG RequestIdValid:1;
    432     ULONGLONG ResponderIdValid:1;
    433     ULONGLONG PreciseIPValid:1;
    434   } DUMMYSTRUCTNAME;
    435 } ERROR_BUS_CHECK, *PERROR_BUS_CHECK;
    436 
    437 #else
    438 
    439 typedef union _ERROR_BUS_CHECK {
    440   ULONGLONG BusCheck;
    441   _ANONYMOUS_STRUCT struct {
    442     ULONGLONG Size:5;
    443     ULONGLONG Internal:1;
    444     ULONGLONG External:1;
    445     ULONGLONG CacheTransfer:1;
    446     ULONGLONG Type:8;
    447     ULONGLONG Severity:5;
    448     ULONGLONG Hierarchy:2;
    449     ULONGLONG Reserved1:1;
    450     ULONGLONG Status:8;
    451     ULONGLONG Reserved2:22;
    452     ULONGLONG InstructionSet:1;
    453     ULONGLONG InstructionSetValid:1;
    454     ULONGLONG PrivilegeLevel:2;
    455     ULONGLONG PrivilegeLevelValid:1;
    456     ULONGLONG MachineCheckCorrected:1;
    457     ULONGLONG TargetAddressValid:1;
    458     ULONGLONG RequestIdValid:1;
    459     ULONGLONG ResponderIdValid:1;
    460     ULONGLONG PreciseIPValid:1;
    461   } DUMMYSTRUCTNAME;
    462 } ERROR_BUS_CHECK, *PERROR_BUS_CHECK;
    463 
    464 #endif
    465 
    466 typedef enum _ERROR_REGFILE_CHECK_IDENTIFIER {
    467   RegFileUnknownId = 0,
    468   GeneralRegisterBank1 = 1,
    469   GeneralRegisterBank0 = 2,
    470   FloatingPointRegister = 3,
    471   BranchRegister = 4,
    472   PredicateRegister = 5,
    473   ApplicationRegister = 6,
    474   ControlRegister = 7,
    475   RegionRegister = 8,
    476   ProtectionKeyRegister = 9,
    477   DataBreakPointRegister = 10,
    478   InstructionBreakPointRegister = 11,
    479   PerformanceMonitorControlRegister = 12,
    480   PerformanceMonitorDataRegister = 13,
    481 } ERROR_REGFILE_CHECK_IDENTIFIER;
    482 
    483 typedef enum _ERROR_REGFILE_CHECK_OPERATION {
    484   RegFileUnknownOp = 0,
    485   RegFileRead = 1,
    486   RegFileWrite = 2,
    487 } ERROR_REGFILE_CHECK_OPERATION;
    488 
    489 typedef union _ERROR_REGFILE_CHECK {
    490   ULONGLONG RegFileCheck;
    491   _ANONYMOUS_STRUCT struct {
    492     ULONGLONG Identifier:4;
    493     ULONGLONG Operation:4;
    494     ULONGLONG RegisterNumber:7;
    495     ULONGLONG RegisterNumberValid:1;
    496     ULONGLONG Reserved1:38;
    497     ULONGLONG InstructionSet:1;
    498     ULONGLONG InstructionSetValid:1;
    499     ULONGLONG PrivilegeLevel:2;
    500     ULONGLONG PrivilegeLevelValid:1;
    501     ULONGLONG MachineCheckCorrected:1;
    502     ULONGLONG Reserved2:3;
    503     ULONGLONG PreciseIPValid:1;
    504   } DUMMYSTRUCTNAME;
    505 } ERROR_REGFILE_CHECK, *PERROR_REGFILE_CHECK;
    506 
    507 #if (NTDDK_VERSION <= WINXP)
    508 typedef enum _ERROR_MS_CHECK_OPERATION {
    509   MsUnknownOp = 0,
    510   MsReadOrLoad = 1,
    511   MsWriteOrStore = 2
    512 } ERROR_MS_CHECK_OPERATION;
    513 #else
    514 typedef enum _ERROR_MS_CHECK_OPERATION {
    515   MsUnknownOp = 0,
    516   MsReadOrLoad = 1,
    517   MsWriteOrStore = 2,
    518   MsOverTemperature = 3,
    519   MsNormalTemperature = 4
    520 } ERROR_MS_CHECK_OPERATION;
    521 #endif
    522 
    523 typedef union _ERROR_MS_CHECK {
    524   ULONGLONG MsCheck;
    525   _ANONYMOUS_STRUCT struct {
    526     ULONGLONG StructureIdentifier:5;
    527     ULONGLONG Level:3;
    528     ULONGLONG ArrayId:4;
    529     ULONGLONG Operation:4;
    530     ULONGLONG Way:6;
    531     ULONGLONG WayValid:1;
    532     ULONGLONG IndexValid:1;
    533     ULONGLONG Reserved1:8;
    534     ULONGLONG Index:8;
    535     ULONGLONG Reserved2:14;
    536     ULONGLONG InstructionSet:1;
    537     ULONGLONG InstructionSetValid:1;
    538     ULONGLONG PrivilegeLevel:2;
    539     ULONGLONG PrivilegeLevelValid:1;
    540     ULONGLONG MachineCheckCorrected:1;
    541     ULONGLONG TargetAddressValid:1;
    542     ULONGLONG RequestIdValid:1;
    543     ULONGLONG ResponderIdValid:1;
    544     ULONGLONG PreciseIPValid:1;
    545   } DUMMYSTRUCTNAME;
    546 } ERROR_MS_CHECK, *PERROR_MS_CHECK;
    547 
    548 typedef union _ERROR_CHECK_INFO {
    549   ULONGLONG CheckInfo;
    550   ERROR_CACHE_CHECK CacheCheck;
    551   ERROR_TLB_CHECK TlbCheck;
    552   ERROR_BUS_CHECK BusCheck;
    553   ERROR_REGFILE_CHECK RegFileCheck;
    554   ERROR_MS_CHECK MsCheck;
    555 } ERROR_CHECK_INFO, *PERROR_CHECK_INFO;
    556 
    557 typedef struct _ERROR_MODINFO {
    558   ERROR_MODINFO_VALID Valid;
    559   ERROR_CHECK_INFO CheckInfo;
    560   ULONGLONG RequestorId;
    561   ULONGLONG ResponderId;
    562   ULONGLONG TargetId;
    563   ULONGLONG PreciseIP;
    564 } ERROR_MODINFO, *PERROR_MODINFO;
    565 
    566 typedef union _ERROR_PROCESSOR_VALID {
    567   ULONGLONG Valid;
    568   _ANONYMOUS_STRUCT struct {
    569     ULONGLONG ErrorMap:1;
    570     ULONGLONG StateParameter:1;
    571     ULONGLONG CRLid:1;
    572     ULONGLONG StaticStruct:1;
    573     ULONGLONG CacheCheckNum:4;
    574     ULONGLONG TlbCheckNum:4;
    575     ULONGLONG BusCheckNum:4;
    576     ULONGLONG RegFileCheckNum:4;
    577     ULONGLONG MsCheckNum:4;
    578     ULONGLONG CpuIdInfo:1;
    579     ULONGLONG Reserved:39;
    580   } DUMMYSTRUCTNAME;
    581 } ERROR_PROCESSOR_VALID, *PERROR_PROCESSOR_VALID;
    582 
    583 typedef union _ERROR_PROCESSOR_ERROR_MAP {
    584   ULONGLONG ErrorMap;
    585   _ANONYMOUS_STRUCT struct {
    586     ULONGLONG   Cid:4;
    587     ULONGLONG   Tid:4;
    588     ULONGLONG   Eic:4;
    589     ULONGLONG   Edc:4;
    590     ULONGLONG   Eit:4;
    591     ULONGLONG   Edt:4;
    592     ULONGLONG   Ebh:4;
    593     ULONGLONG   Erf:4;
    594     ULONGLONG   Ems:16;
    595     ULONGLONG   Reserved:16;
    596   } DUMMYSTRUCTNAME;
    597 } ERROR_PROCESSOR_ERROR_MAP, *PERROR_PROCESSOR_ERROR_MAP;
    598 
    599 typedef ERROR_PROCESSOR_ERROR_MAP    _ERROR_PROCESSOR_LEVEL_INDEX;
    600 typedef _ERROR_PROCESSOR_LEVEL_INDEX ERROR_PROCESSOR_LEVEL_INDEX, *PERROR_PROCESSOR_LEVEL_INDEX;
    601 
    602 typedef union _ERROR_PROCESSOR_STATE_PARAMETER {
    603   ULONGLONG   StateParameter;
    604   _ANONYMOUS_STRUCT struct {
    605     ULONGLONG reserved0:2;
    606     ULONGLONG rz:1;
    607     ULONGLONG ra:1;
    608     ULONGLONG me:1;
    609     ULONGLONG mn:1;
    610     ULONGLONG sy:1;
    611     ULONGLONG co:1;
    612     ULONGLONG ci:1;
    613     ULONGLONG us:1;
    614     ULONGLONG hd:1;
    615     ULONGLONG tl:1;
    616     ULONGLONG mi:1;
    617     ULONGLONG pi:1;
    618     ULONGLONG pm:1;
    619     ULONGLONG dy:1;
    620     ULONGLONG in:1;
    621     ULONGLONG rs:1;
    622     ULONGLONG cm:1;
    623     ULONGLONG ex:1;
    624     ULONGLONG cr:1;
    625     ULONGLONG pc:1;
    626     ULONGLONG dr:1;
    627     ULONGLONG tr:1;
    628     ULONGLONG rr:1;
    629     ULONGLONG ar:1;
    630     ULONGLONG br:1;
    631     ULONGLONG pr:1;
    632     ULONGLONG fp:1;
    633     ULONGLONG b1:1;
    634     ULONGLONG b0:1;
    635     ULONGLONG gr:1;
    636     ULONGLONG dsize:16;
    637     ULONGLONG reserved1:11;
    638     ULONGLONG cc:1;
    639     ULONGLONG tc:1;
    640     ULONGLONG bc:1;
    641     ULONGLONG rc:1;
    642     ULONGLONG uc:1;
    643   } DUMMYSTRUCTNAME;
    644 } ERROR_PROCESSOR_STATE_PARAMETER, *PERROR_PROCESSOR_STATE_PARAMETER;
    645 
    646 typedef union _PROCESSOR_LOCAL_ID {
    647   ULONGLONG LocalId;
    648   _ANONYMOUS_STRUCT struct {
    649     ULONGLONG reserved:16;
    650     ULONGLONG eid:8;
    651     ULONGLONG id:8;
    652     ULONGLONG ignored:32;
    653   } DUMMYSTRUCTNAME;
    654 } PROCESSOR_LOCAL_ID, *PPROCESSOR_LOCAL_ID;
    655 
    656 typedef struct _ERROR_PROCESSOR_MS {
    657   ULONGLONG MsError[1];
    658 } ERROR_PROCESSOR_MS, *PERROR_PROCESSOR_MS;
    659 
    660 typedef struct _ERROR_PROCESSOR_CPUID_INFO {
    661   ULONGLONG CpuId0;
    662   ULONGLONG CpuId1;
    663   ULONGLONG CpuId2;
    664   ULONGLONG CpuId3;
    665   ULONGLONG CpuId4;
    666   ULONGLONG Reserved;
    667 } ERROR_PROCESSOR_CPUID_INFO, *PERROR_PROCESSOR_CPUID_INFO;
    668 
    669 typedef union _ERROR_PROCESSOR_STATIC_INFO_VALID {
    670   ULONGLONG Valid;
    671   _ANONYMOUS_STRUCT struct {
    672     ULONGLONG MinState:1;
    673     ULONGLONG BR:1;
    674     ULONGLONG CR:1;
    675     ULONGLONG AR:1;
    676     ULONGLONG RR:1;
    677     ULONGLONG FR:1;
    678     ULONGLONG Reserved:58;
    679   } DUMMYSTRUCTNAME;
    680 } ERROR_PROCESSOR_STATIC_INFO_VALID, *PERROR_PROCESSOR_STATIC_INFO_VALID;
    681 
    682 typedef struct _ERROR_PROCESSOR_STATIC_INFO {
    683   ERROR_PROCESSOR_STATIC_INFO_VALID Valid;
    684   UCHAR MinState[1024];
    685   ULONGLONG BR[8];
    686   ULONGLONG CR[128];
    687   ULONGLONG AR[128];
    688   ULONGLONG RR[8];
    689   ULONGLONG FR[2 * 128];
    690 } ERROR_PROCESSOR_STATIC_INFO, *PERROR_PROCESSOR_STATIC_INFO;
    691 
    692 typedef struct _ERROR_PROCESSOR {
    693   ERROR_SECTION_HEADER Header;
    694   ERROR_PROCESSOR_VALID Valid;
    695   ERROR_PROCESSOR_ERROR_MAP ErrorMap;
    696   ERROR_PROCESSOR_STATE_PARAMETER StateParameter;
    697   PROCESSOR_LOCAL_ID CRLid;
    698 } ERROR_PROCESSOR, *PERROR_PROCESSOR;
    699 
    700 #define ERROR_PROCESSOR_STATE_PARAMETER_CACHE_CHECK_SHIFT         59
    701 #define ERROR_PROCESSOR_STATE_PARAMETER_CACHE_CHECK_MASK          0x1
    702 #define ERROR_PROCESSOR_STATE_PARAMETER_TLB_CHECK_SHIFT           60
    703 #define ERROR_PROCESSOR_STATE_PARAMETER_TLB_CHECK_MASK            0x1
    704 #define ERROR_PROCESSOR_STATE_PARAMETER_BUS_CHECK_SHIFT           61
    705 #define ERROR_PROCESSOR_STATE_PARAMETER_BUS_CHECK_MASK            0x1
    706 #define ERROR_PROCESSOR_STATE_PARAMETER_REG_CHECK_SHIFT           62
    707 #define ERROR_PROCESSOR_STATE_PARAMETER_REG_CHECK_MASK            0x1
    708 #define ERROR_PROCESSOR_STATE_PARAMETER_MICROARCH_CHECK_SHIFT     63
    709 #define ERROR_PROCESSOR_STATE_PARAMETER_MICROARCH_CHECK_MASK      0x1
    710 
    711 #define ERROR_PROCESSOR_STATE_PARAMETER_UNKNOWN_CHECK_SHIFT       ERROR_PROCESSOR_STATE_PARAMETER_MICROARCH_CHECK_SHIFT
    712 #define ERROR_PROCESSOR_STATE_PARAMETER_UNKNOWN_CHECK_MASK        ERROR_PROCESSOR_STATE_PARAMETER_MICROARCH_CHECK_MASK
    713 
    714 typedef enum _ERR_TYPES {
    715   ERR_INTERNAL = 1,
    716   ERR_BUS = 16,
    717   ERR_MEM = 4,
    718   ERR_TLB = 5,
    719   ERR_CACHE = 6,
    720   ERR_FUNCTION = 7,
    721   ERR_SELFTEST = 8,
    722   ERR_FLOW = 9,
    723   ERR_MAP = 17,
    724   ERR_IMPROPER = 18,
    725   ERR_UNIMPL = 19,
    726   ERR_LOL = 20,
    727   ERR_RESPONSE = 21,
    728   ERR_PARITY = 22,
    729   ERR_PROTOCOL = 23,
    730   ERR_ERROR = 24,
    731   ERR_TIMEOUT = 25,
    732   ERR_POISONED = 26,
    733 } _ERR_TYPE;
    734 
    735 typedef union _ERROR_STATUS {
    736   ULONGLONG Status;
    737   _ANONYMOUS_STRUCT struct {
    738     ULONGLONG Reserved0:8;
    739     ULONGLONG Type:8;
    740     ULONGLONG Address:1;
    741     ULONGLONG Control:1;
    742     ULONGLONG Data:1;
    743     ULONGLONG Responder:1;
    744     ULONGLONG Requestor:1;
    745     ULONGLONG FirstError:1;
    746     ULONGLONG Overflow:1;
    747     ULONGLONG Reserved1:41;
    748   } DUMMYSTRUCTNAME;
    749 } ERROR_STATUS, *PERROR_STATUS;
    750 
    751 typedef struct _ERROR_OEM_DATA {
    752   USHORT Length;
    753 } ERROR_OEM_DATA, *PERROR_OEM_DATA;
    754 
    755 typedef union _ERROR_BUS_SPECIFIC_DATA {
    756   ULONGLONG BusSpecificData;
    757   _ANONYMOUS_STRUCT struct {
    758     ULONGLONG LockAsserted:1;
    759     ULONGLONG DeferLogged:1;
    760     ULONGLONG IOQEmpty:1;
    761     ULONGLONG DeferredTransaction:1;
    762     ULONGLONG RetriedTransaction:1;
    763     ULONGLONG MemoryClaimedTransaction:1;
    764     ULONGLONG IOClaimedTransaction:1;
    765     ULONGLONG ResponseParitySignal:1;
    766     ULONGLONG DeferSignal:1;
    767     ULONGLONG HitMSignal:1;
    768     ULONGLONG HitSignal:1;
    769     ULONGLONG RequestBusFirstCycle:6;
    770     ULONGLONG RequestBusSecondCycle:6;
    771     ULONGLONG AddressParityBusFirstCycle:2;
    772     ULONGLONG AddressParityBusSecondCycle:2;
    773     ULONGLONG ResponseBus:3;
    774     ULONGLONG RequestParitySignalFirstCycle:1;
    775     ULONGLONG RequestParitySignalSecondCycle:1;
    776     ULONGLONG Reserved:32;
    777   } DUMMYSTRUCTNAME;
    778 } ERROR_BUS_SPECIFIC_DATA, *PERROR_BUS_SPECIFIC_DATA;
    779 
    780 #define ERROR_MEMORY_GUID {0xe429faf2, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
    781 
    782 typedef union _ERROR_MEMORY_VALID {
    783   ULONGLONG Valid;
    784   _ANONYMOUS_STRUCT struct {
    785     ULONGLONG ErrorStatus:1;
    786     ULONGLONG PhysicalAddress:1;
    787     ULONGLONG AddressMask:1;
    788     ULONGLONG Node:1;
    789     ULONGLONG Card:1;
    790     ULONGLONG Module:1;
    791     ULONGLONG Bank:1;
    792     ULONGLONG Device:1;
    793     ULONGLONG Row:1;
    794     ULONGLONG Column:1;
    795     ULONGLONG BitPosition:1;
    796     ULONGLONG RequestorId:1;
    797     ULONGLONG ResponderId:1;
    798     ULONGLONG TargetId:1;
    799     ULONGLONG BusSpecificData:1;
    800     ULONGLONG OemId:1;
    801     ULONGLONG OemData:1;
    802     ULONGLONG Reserved:47;
    803   } DUMMYSTRUCTNAME;
    804 } ERROR_MEMORY_VALID, *PERROR_MEMORY_VALID;
    805 
    806 typedef struct _ERROR_MEMORY {
    807   ERROR_SECTION_HEADER Header;
    808   ERROR_MEMORY_VALID Valid;
    809   ERROR_STATUS ErrorStatus;
    810   ULONGLONG PhysicalAddress;
    811   ULONGLONG PhysicalAddressMask;
    812   USHORT Node;
    813   USHORT Card;
    814   USHORT Module;
    815   USHORT Bank;
    816   USHORT Device;
    817   USHORT Row;
    818   USHORT Column;
    819   USHORT BitPosition;
    820   ULONGLONG RequestorId;
    821   ULONGLONG ResponderId;
    822   ULONGLONG TargetId;
    823   ULONGLONG BusSpecificData;
    824   UCHAR OemId[16];
    825   ERROR_OEM_DATA OemData;
    826 } ERROR_MEMORY, *PERROR_MEMORY;
    827 
    828 #define ERROR_PCI_BUS_GUID {0xe429faf4, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
    829 
    830 typedef union _ERROR_PCI_BUS_VALID {
    831   ULONGLONG Valid;
    832   _ANONYMOUS_STRUCT struct {
    833     ULONGLONG ErrorStatus:1;
    834     ULONGLONG ErrorType:1;
    835     ULONGLONG Id:1;
    836     ULONGLONG Address:1;
    837     ULONGLONG Data:1;
    838     ULONGLONG CmdType:1;
    839     ULONGLONG RequestorId:1;
    840     ULONGLONG ResponderId:1;
    841     ULONGLONG TargetId:1;
    842     ULONGLONG OemId:1;
    843     ULONGLONG OemData:1;
    844     ULONGLONG Reserved:53;
    845   } DUMMYSTRUCTNAME;
    846 } ERROR_PCI_BUS_VALID, *PERROR_PCI_BUS_VALID;
    847 
    848 typedef struct _ERROR_PCI_BUS_TYPE {
    849   UCHAR Type;
    850   UCHAR Reserved;
    851 } ERROR_PCI_BUS_TYPE, *PERROR_PCI_BUS_TYPE;
    852 
    853 #define PciBusUnknownError       ((UCHAR)0)
    854 #define PciBusDataParityError    ((UCHAR)1)
    855 #define PciBusSystemError        ((UCHAR)2)
    856 #define PciBusMasterAbort        ((UCHAR)3)
    857 #define PciBusTimeOut            ((UCHAR)4)
    858 #define PciMasterDataParityError ((UCHAR)5)
    859 #define PciAddressParityError    ((UCHAR)6)
    860 #define PciCommandParityError    ((UCHAR)7)
    861 
    862 typedef struct _ERROR_PCI_BUS_ID {
    863   UCHAR BusNumber;
    864   UCHAR SegmentNumber;
    865 } ERROR_PCI_BUS_ID, *PERROR_PCI_BUS_ID;
    866 
    867 typedef struct _ERROR_PCI_BUS {
    868   ERROR_SECTION_HEADER Header;
    869   ERROR_PCI_BUS_VALID Valid;
    870   ERROR_STATUS ErrorStatus;
    871   ERROR_PCI_BUS_TYPE Type;
    872   ERROR_PCI_BUS_ID Id;
    873   UCHAR Reserved[4];
    874   ULONGLONG Address;
    875   ULONGLONG Data;
    876   ULONGLONG CmdType;
    877   ULONGLONG RequestorId;
    878   ULONGLONG ResponderId;
    879   ULONGLONG TargetId;
    880   UCHAR OemId[16];
    881   ERROR_OEM_DATA OemData;
    882 } ERROR_PCI_BUS, *PERROR_PCI_BUS;
    883 
    884 #define ERROR_PCI_COMPONENT_GUID {0xe429faf6, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
    885 
    886 typedef union _ERROR_PCI_COMPONENT_VALID {
    887   ULONGLONG Valid;
    888   _ANONYMOUS_STRUCT struct {
    889     ULONGLONG ErrorStatus:1;
    890     ULONGLONG Info:1;
    891     ULONGLONG MemoryMappedRegistersPairs:1;
    892     ULONGLONG ProgrammedIORegistersPairs:1;
    893     ULONGLONG RegistersDataPairs:1;
    894     ULONGLONG OemData:1;
    895     ULONGLONG Reserved:58;
    896   } DUMMYSTRUCTNAME;
    897 } ERROR_PCI_COMPONENT_VALID, *PERROR_PCI_COMPONENT_VALID;
    898 
    899 typedef struct _ERROR_PCI_COMPONENT_INFO {
    900   USHORT VendorId;
    901   USHORT DeviceId;
    902   UCHAR ClassCodeInterface;
    903   UCHAR ClassCodeSubClass;
    904   UCHAR ClassCodeBaseClass;
    905   UCHAR FunctionNumber;
    906   UCHAR DeviceNumber;
    907   UCHAR BusNumber;
    908   UCHAR SegmentNumber;
    909   UCHAR Reserved0;
    910   ULONG Reserved1;
    911 } ERROR_PCI_COMPONENT_INFO, *PERROR_PCI_COMPONENT_INFO;
    912 
    913 typedef struct _ERROR_PCI_COMPONENT {
    914   ERROR_SECTION_HEADER Header;
    915   ERROR_PCI_COMPONENT_VALID Valid;
    916   ERROR_STATUS ErrorStatus;
    917   ERROR_PCI_COMPONENT_INFO Info;
    918   ULONG MemoryMappedRegistersPairs;
    919   ULONG ProgrammedIORegistersPairs;
    920 } ERROR_PCI_COMPONENT, *PERROR_PCI_COMPONENT;
    921 
    922 #define ERROR_SYSTEM_EVENT_LOG_GUID {0xe429faf3, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
    923 
    924 typedef union _ERROR_SYSTEM_EVENT_LOG_VALID {
    925   ULONGLONG Valid;
    926   _ANONYMOUS_STRUCT struct {
    927     ULONGLONG RecordId:1;
    928     ULONGLONG RecordType:1;
    929     ULONGLONG GeneratorId:1;
    930     ULONGLONG EVMRev:1;
    931     ULONGLONG SensorType:1;
    932     ULONGLONG SensorNum:1;
    933     ULONGLONG EventDirType:1;
    934     ULONGLONG EventData1:1;
    935     ULONGLONG EventData2:1;
    936     ULONGLONG EventData3:1;
    937     ULONGLONG Reserved:54;
    938   } DUMMYSTRUCTNAME;
    939 } ERROR_SYSTEM_EVENT_LOG_VALID, *PSYSTEM_EVENT_LOG_VALID;
    940 
    941 typedef struct _ERROR_SYSTEM_EVENT_LOG {
    942   ERROR_SECTION_HEADER Header;
    943   ERROR_SYSTEM_EVENT_LOG_VALID Valid;
    944   USHORT RecordId;
    945   UCHAR RecordType;
    946   ULONG TimeStamp;
    947   USHORT GeneratorId;
    948   UCHAR EVMRevision;
    949   UCHAR SensorType;
    950   UCHAR SensorNumber;
    951   UCHAR EventDir;
    952   UCHAR Data1;
    953   UCHAR Data2;
    954   UCHAR Data3;
    955 } ERROR_SYSTEM_EVENT_LOG, *PERROR_SYSTEM_EVENT_LOG;
    956 
    957 #define ERROR_SMBIOS_GUID {0xe429faf5, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
    958 
    959 typedef union _ERROR_SMBIOS_VALID {
    960   ULONGLONG Valid;
    961   _ANONYMOUS_STRUCT struct {
    962     ULONGLONG EventType:1;
    963     ULONGLONG Length:1;
    964     ULONGLONG TimeStamp:1;
    965     ULONGLONG OemData:1;
    966     ULONGLONG Reserved:60;
    967   } DUMMYSTRUCTNAME;
    968 } ERROR_SMBIOS_VALID, *PERROR_SMBIOS_VALID;
    969 
    970 typedef UCHAR ERROR_SMBIOS_EVENT_TYPE, *PERROR_SMBIOS_EVENT_TYPE;
    971 
    972 typedef struct _ERROR_SMBIOS {
    973   ERROR_SECTION_HEADER Header;
    974   ERROR_SMBIOS_VALID Valid;
    975   ERROR_SMBIOS_EVENT_TYPE EventType;
    976   UCHAR Length;
    977   ERROR_TIMESTAMP TimeStamp;
    978   ERROR_OEM_DATA OemData;
    979 } ERROR_SMBIOS, *PERROR_SMBIOS;
    980 
    981 #define ERROR_PLATFORM_SPECIFIC_GUID {0xe429faf7, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
    982 
    983 typedef union _ERROR_PLATFORM_SPECIFIC_VALID {
    984   ULONGLONG Valid;
    985   _ANONYMOUS_STRUCT struct {
    986     ULONGLONG ErrorStatus:1;
    987     ULONGLONG RequestorId:1;
    988     ULONGLONG ResponderId:1;
    989     ULONGLONG TargetId:1;
    990     ULONGLONG BusSpecificData:1;
    991     ULONGLONG OemId:1;
    992     ULONGLONG OemData:1;
    993     ULONGLONG OemDevicePath:1;
    994     ULONGLONG Reserved:56;
    995   } DUMMYSTRUCTNAME;
    996 } ERROR_PLATFORM_SPECIFIC_VALID, *PERROR_PLATFORM_SPECIFIC_VALID;
    997 
    998 typedef struct _ERROR_PLATFORM_SPECIFIC {
    999   ERROR_SECTION_HEADER Header;
   1000   ERROR_PLATFORM_SPECIFIC_VALID Valid;
   1001   ERROR_STATUS ErrorStatus;
   1002   ULONGLONG RequestorId;
   1003   ULONGLONG ResponderId;
   1004   ULONGLONG TargetId;
   1005   ERROR_BUS_SPECIFIC_DATA BusSpecificData;
   1006   UCHAR OemId[16];
   1007   ERROR_OEM_DATA OemData;
   1008 } ERROR_PLATFORM_SPECIFIC, *PERROR_PLATFORM_SPECIFIC;
   1009 
   1010 #define ERROR_PLATFORM_BUS_GUID {0xe429faf9, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
   1011 
   1012 typedef union _ERROR_PLATFORM_BUS_VALID {
   1013   ULONGLONG Valid;
   1014   _ANONYMOUS_STRUCT struct {
   1015     ULONGLONG ErrorStatus:1;
   1016     ULONGLONG RequestorId:1;
   1017     ULONGLONG ResponderId:1;
   1018     ULONGLONG TargetId:1;
   1019     ULONGLONG BusSpecificData:1;
   1020     ULONGLONG OemId:1;
   1021     ULONGLONG OemData:1;
   1022     ULONGLONG OemDevicePath:1;
   1023     ULONGLONG Reserved:56;
   1024   } DUMMYSTRUCTNAME;
   1025 } ERROR_PLATFORM_BUS_VALID, *PERROR_PLATFORM_BUS_VALID;
   1026 
   1027 typedef struct _ERROR_PLATFORM_BUS {
   1028   ERROR_SECTION_HEADER Header;
   1029   ERROR_PLATFORM_BUS_VALID Valid;
   1030   ERROR_STATUS ErrorStatus;
   1031   ULONGLONG RequestorId;
   1032   ULONGLONG ResponderId;
   1033   ULONGLONG TargetId;
   1034   ERROR_BUS_SPECIFIC_DATA BusSpecificData;
   1035   UCHAR OemId[16];
   1036   ERROR_OEM_DATA OemData;
   1037 } ERROR_PLATFORM_BUS, *PERROR_PLATFORM_BUS;
   1038 
   1039 #define ERROR_PLATFORM_HOST_CONTROLLER_GUID {0xe429faf8, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}}
   1040 
   1041 typedef union _ERROR_PLATFORM_HOST_CONTROLLER_VALID {
   1042   ULONGLONG Valid;
   1043   _ANONYMOUS_STRUCT struct {
   1044     ULONGLONG ErrorStatus:1;
   1045     ULONGLONG RequestorId:1;
   1046     ULONGLONG ResponderId:1;
   1047     ULONGLONG TargetId:1;
   1048     ULONGLONG BusSpecificData:1;
   1049     ULONGLONG OemId:1;
   1050     ULONGLONG OemData:1;
   1051     ULONGLONG OemDevicePath:1;
   1052     ULONGLONG Reserved:56;
   1053   } DUMMYSTRUCTNAME;
   1054 } ERROR_PLATFORM_HOST_CONTROLLER_VALID, *PERROR_PLATFORM_HOST_CONTROLLER_VALID;
   1055 
   1056 typedef struct _ERROR_PLATFORM_HOST_CONTROLLER {
   1057   ERROR_SECTION_HEADER Header;
   1058   ERROR_PCI_COMPONENT_VALID Valid;
   1059   ERROR_STATUS ErrorStatus;
   1060   ULONGLONG RequestorId;
   1061   ULONGLONG ResponderId;
   1062   ULONGLONG TargetId;
   1063   ERROR_BUS_SPECIFIC_DATA BusSpecificData;
   1064   UCHAR OemId[16];
   1065   ERROR_OEM_DATA OemData;
   1066 } ERROR_PLATFORM_HOST_CONTROLLER, *PERROR_PLATFORM_HOST_CONTROLLER;
   1067 
   1068 typedef ERROR_RECORD_HEADER ERROR_LOGRECORD, *PERROR_LOGRECORD;
   1069 typedef ERROR_RECORD_HEADER MCA_EXCEPTION, *PMCA_EXCEPTION;
   1070 typedef ERROR_RECORD_HEADER CMC_EXCEPTION, *PCMC_EXCEPTION;
   1071 typedef ERROR_RECORD_HEADER CPE_EXCEPTION, *PCPE_EXCEPTION;
   1072 #if (NTDDI_VERSION > NTDDI_WINXP)
   1073 typedef ERROR_RECORD_HEADER INIT_EXCEPTION, *PINIT_EXCEPTION;
   1074 #endif
   1075 
   1076 #endif /* defined(_IA64_) */
   1077 
   1078 #endif /* defined(_X86_) || defined(_IA64_) || defined(_AMD64_) */
   1079