\r
//\r
// Current Language Number\r
+ // It's the index of multiple languages. Languages are filled by SmbiosFldMiscType14.\r
//\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE13, CurrentLanguages),\r
- &(InstallableLanguage->CurrentLanguageNumber),\r
- 2 // 64 * sizeof(CHAR16)\r
+ CopyMem (\r
+ (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE13, CurrentLanguages),\r
+ &InstallableLanguage->CurrentLanguageNumber,\r
+ 1\r
);\r
\r
return EFI_SUCCESS;\r
return EFI_SUCCESS;\r
}\r
\r
+/**\r
+ Field Filling Function for Misc SubClass record type 35 -- Management Device Component.\r
+ \r
+ @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
+ @param Offset Offset of SMBIOS record which RecordData will be filled.\r
+ @param RecordData RecordData buffer will be filled.\r
+ @param RecordDataSize The size of RecordData buffer.\r
+ \r
+ @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
+**/\r
+EFI_STATUS\r
+SmbiosFldMiscType35 (\r
+ IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
+ IN UINT32 Offset,\r
+ IN VOID *RecordData,\r
+ IN UINT32 RecordDataSize\r
+ )\r
+{\r
+ EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION *ManagementDeviceComponent;\r
+ EFI_INTER_LINK_DATA ManagementDeviceLink;\r
+ EFI_INTER_LINK_DATA ManagementDeviceComponentLink;\r
+ EFI_INTER_LINK_DATA ManagementDeviceThresholdLink;\r
+ \r
+ ManagementDeviceComponent = (EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION *)RecordData;\r
+ CopyMem (\r
+ &ManagementDeviceLink,\r
+ &ManagementDeviceComponent->ManagementDeviceLink,\r
+ sizeof (EFI_INTER_LINK_DATA)\r
+ );\r
+ CopyMem (\r
+ &ManagementDeviceComponentLink,\r
+ &ManagementDeviceComponent->ManagementDeviceComponentLink,\r
+ sizeof (EFI_INTER_LINK_DATA)\r
+ );\r
+ CopyMem (&ManagementDeviceThresholdLink,\r
+ &ManagementDeviceComponent->ManagementDeviceThresholdLink,\r
+ sizeof (EFI_INTER_LINK_DATA)\r
+ );\r
+\r
+ //\r
+ // ManagementDeviceComponentDescription\r
+ //\r
+ SmbiosFldString (\r
+ StructureNode,\r
+ OFFSET_OF (SMBIOS_TABLE_TYPE35, Description),\r
+ &ManagementDeviceComponent->ManagementDeviceComponentDescription,\r
+ 2 // 64 * sizeof(CHAR16)\r
+ );\r
+\r
+ //\r
+ // ManagementDeviceLink\r
+ //\r
+ SmbiosFldInterLink (\r
+ StructureNode,\r
+ (UINT16) OFFSET_OF (SMBIOS_TABLE_TYPE35, ManagementDeviceHandle),\r
+ 34, // SMBIOS type 34 - Management Device\r
+ &ManagementDeviceLink,\r
+ &gEfiMiscSubClassGuid\r
+ );\r
+\r
+ //\r
+ // ManagementDeviceComponentLink\r
+ //\r
+ SmbiosFldInterLink (\r
+ StructureNode,\r
+ (UINT16) OFFSET_OF (SMBIOS_TABLE_TYPE35, ComponentHandle),\r
+ ManagementDeviceComponent->ComponentType, // SMBIOS type, according to SMBIOS spec, it can be Type 26, 27, 28, 29\r
+ &ManagementDeviceComponentLink,\r
+ &gEfiMiscSubClassGuid\r
+ );\r
+\r
+ //\r
+ // ManagementDeviceThresholdLink\r
+ //\r
+ SmbiosFldInterLink (\r
+ StructureNode,\r
+ (UINT16) OFFSET_OF (SMBIOS_TABLE_TYPE35, ThresholdHandle),\r
+ 36, // SMBIOS type 36 - Management Device Threshold Data\r
+ &ManagementDeviceThresholdLink,\r
+ &gEfiMiscSubClassGuid\r
+ );\r
+\r
+ return EFI_SUCCESS;\r
+}\r
+\r
/**\r
Field Filling Function for Misc SubClass record type 36 -- Management Device Threshold.\r
\r