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