+//\r
+// Memory. Controller Information - SMBIOS Type 5\r
+//\r
+#define EFI_MEMORY_CONTROLLER_INFORMATION_RECORD_NUMBER 0x00000008\r
+\r
+typedef enum { \r
+ EfiErrorDetectingMethodOther = 1,\r
+ EfiErrorDetectingMethodUnknown = 2,\r
+ EfiErrorDetectingMethodNone = 3,\r
+ EfiErrorDetectingMethodParity = 4,\r
+ EfiErrorDetectingMethod32Ecc = 5,\r
+ EfiErrorDetectingMethod64Ecc = 6,\r
+ EfiErrorDetectingMethod128Ecc = 7,\r
+ EfiErrorDetectingMethodCrc = 8\r
+} EFI_MEMORY_ERROR_DETECT_METHOD_TYPE;\r
+\r
+typedef struct {\r
+ UINT8 Other :1;\r
+ UINT8 Unknown :1;\r
+ UINT8 None :1;\r
+ UINT8 SingleBitErrorCorrect :1;\r
+ UINT8 DoubleBitErrorCorrect :1;\r
+ UINT8 ErrorScrubbing :1;\r
+ UINT8 Reserved :2;\r
+} EFI_MEMORY_ERROR_CORRECT_CAPABILITY;\r
+\r
+typedef enum { \r
+ EfiMemoryInterleaveOther = 1,\r
+ EfiMemoryInterleaveUnknown = 2,\r
+ EfiMemoryInterleaveOneWay = 3,\r
+ EfiMemoryInterleaveTwoWay = 4,\r
+ EfiMemoryInterleaveFourWay = 5,\r
+ EfiMemoryInterleaveEightWay = 6,\r
+ EfiMemoryInterleaveSixteenWay = 7\r
+} EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE;\r
+\r
+typedef struct {\r
+ UINT16 Other :1;\r
+ UINT16 Unknown :1;\r
+ UINT16 SeventyNs :1;\r
+ UINT16 SixtyNs :1;\r
+ UINT16 FiftyNs :1;\r
+ UINT16 Reserved :11;\r
+} EFI_MEMORY_SPEED_TYPE;\r
+\r
+typedef struct {\r
+ UINT16 Other :1;\r
+ UINT16 Unknown :1;\r
+ UINT16 Standard :1;\r
+ UINT16 FastPageMode :1;\r
+ UINT16 EDO :1;\r
+ UINT16 Parity :1;\r
+ UINT16 ECC :1;\r
+ UINT16 SIMM :1;\r
+ UINT16 DIMM :1;\r
+ UINT16 BurstEdo :1;\r
+ UINT16 SDRAM :1;\r
+ UINT16 Reserved :5;\r
+} EFI_MEMORY_SUPPORTED_TYPE;\r
+\r
+typedef struct {\r
+ UINT8 Five :1;\r
+ UINT8 There :1;\r
+ UINT8 Two :1;\r
+ UINT8 Reserved :5;\r
+} EFI_MEMORY_MODULE_VOLTAGE_TYPE;\r
+\r
+typedef struct {\r
+ EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod;\r
+ EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability;\r
+ EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemorySupportedInterleave;\r
+ EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemoryCurrentInterleave;\r
+ UINT8 MaxMemoryModuleSize;\r
+ EFI_MEMORY_SPEED_TYPE MemorySpeedType;\r
+ EFI_MEMORY_SUPPORTED_TYPE MemorySupportedType;\r
+ EFI_MEMORY_MODULE_VOLTAGE_TYPE MemoryModuleVoltage;\r
+ UINT8 NumberofMemorySlot;\r
+ EFI_MEMORY_ERROR_CORRECT_CAPABILITY EnabledCorrectingCapability;\r
+ UINT16 *MemoryModuleConfigHandles;\r
+} EFI_MEMORY_CONTROLLER_INFORMATION;\r
+\r
+//\r
+// Memory. Error Information - SMBIOS Type 18\r
+//\r
+#define EFI_MEMORY_32BIT_ERROR_INFORMATION_RECORD_NUMBER 0x00000009\r
+\r
+typedef enum { \r
+ EfiMemoryErrorOther = 1,\r
+ EfiMemoryErrorUnknown = 2,\r
+ EfiMemoryErrorOk = 3,\r
+ EfiMemoryErrorBadRead = 4,\r
+ EfiMemoryErrorParity = 5,\r
+ EfiMemoryErrorSigleBit = 6,\r
+ EfiMemoryErrorDoubleBit = 7,\r
+ EfiMemoryErrorMultiBit = 8,\r
+ EfiMemoryErrorNibble = 9,\r
+ EfiMemoryErrorChecksum = 10,\r
+ EfiMemoryErrorCrc = 11,\r
+ EfiMemoryErrorCorrectSingleBit = 12,\r
+ EfiMemoryErrorCorrected = 13,\r
+ EfiMemoryErrorUnCorrectable = 14\r
+} EFI_MEMORY_ERROR_TYPE;\r
+\r
+typedef enum { \r
+ EfiMemoryGranularityOther = 1,\r
+ EfiMemoryGranularityOtherUnknown = 2,\r
+ EfiMemoryGranularityDeviceLevel = 3,\r
+ EfiMemoryGranularityMemPartitionLevel = 4\r
+} EFI_MEMORY_ERROR_GRANULARITY_TYPE;\r
+\r
+typedef enum { \r
+ EfiMemoryErrorOperationOther = 1,\r
+ EfiMemoryErrorOperationUnknown = 2,\r
+ EfiMemoryErrorOperationRead = 3,\r
+ EfiMemoryErrorOperationWrite = 4,\r
+ EfiMemoryErrorOperationPartialWrite = 5\r
+} EFI_MEMORY_ERROR_OPERATION_TYPE;\r
+\r
+typedef struct {\r
+ EFI_MEMORY_ERROR_TYPE MemoryErrorType;\r
+ EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity;\r
+ EFI_MEMORY_ERROR_OPERATION_TYPE MemoryErrorOperation;\r
+ UINT32 VendorSyndrome;\r
+ UINT32 MemoryArrayErrorAddress;\r
+ UINT32 DeviceErrorAddress;\r
+ UINT32 DeviceErrorResolution;\r
+} EFI_MEMORY_32BIT_ERROR_INFORMATION;\r
+\r
+//\r
+// Memory. Error Information - SMBIOS Type 33\r
+//\r
+#define EFI_MEMORY_64BIT_ERROR_INFORMATION_RECORD_NUMBER 0x0000000A\r
+\r
+typedef struct {\r
+ EFI_MEMORY_ERROR_TYPE MemoryErrorType;\r
+ EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity;\r
+ EFI_MEMORY_ERROR_OPERATION_TYPE MemoryErrorOperation;\r
+ UINT32 VendorSyndrome;\r
+ UINT64 MemoryArrayErrorAddress;\r
+ UINT64 DeviceErrorAddress;\r
+ UINT32 DeviceErrorResolution;\r
+} EFI_MEMORY_64BIT_ERROR_INFORMATION;\r