]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/Thunk.h
EdkCompatibilityPkg: Remove EdkCompatibilityPkg
[mirror_edk2.git] / EdkCompatibilityPkg / Compatibility / PiSmbiosRecordOnDataHubSmbiosRecordThunk / Thunk.h
diff --git a/EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/Thunk.h b/EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/Thunk.h
deleted file mode 100644 (file)
index 98e5371..0000000
+++ /dev/null
@@ -1,1414 +0,0 @@
-/** @file\r
-  The common header file for the thunk driver.\r
-  \r
-Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-**/\r
-\r
-#ifndef _DATAHUB_TO_SMBIOS_THUNK_\r
-#define _DATAHUB_TO_SMBIOS_THUNK_\r
-\r
-#include <FrameworkDxe.h>\r
-#include <IndustryStandard/SmBios.h>\r
-\r
-#include <Guid/EventGroup.h>\r
-#include <Guid/SmBios.h>\r
-#include <Guid/ZeroGuid.h>\r
-#include <Protocol/DataHub.h>\r
-#include <Guid/DataHubRecords.h>\r
-#include <Protocol/HiiDatabase.h>\r
-#include <Protocol/Smbios.h>\r
-\r
-#include <Library/BaseLib.h>\r
-#include <Library/PcdLib.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/UefiLib.h>\r
-#include <Library/HiiLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/ReportStatusCodeLib.h>\r
-#include <Library/UefiDriverEntryPoint.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-\r
-//\r
-// Conversion Table that describes the translation method for\r
-// Data Hub Data Records of certain SubClass and RecordNumber\r
-//\r
-typedef enum {\r
-  BySubclassInstanceSubinstanceProducer,\r
-  BySubClassInstanceProducer,\r
-  MaxLocatingMethod\r
-} SMBIOS_STRUCTURE_LOCATING_METHOD;\r
-\r
-typedef enum {\r
-  RecordDataUnchangedOffsetSpecified,\r
-  ByFunctionWithOffsetSpecified,\r
-  ByFunction,\r
-  ByFunctionWithWholeDataRecord,\r
-  MaxFieldFillingMethod\r
-} SMBIOS_FIELD_FILLING_METHOD;\r
-\r
-typedef struct _SMBIOS_STRUCTURE_NODE SMBIOS_STRUCTURE_NODE;\r
-\r
-typedef struct {\r
-  UINT8   Type;\r
-  UINT8   Length;\r
-  UINT16  Handle;\r
-  UINT8   Tailing[2];\r
-} EFI_SMBIOS_TABLE_TYPE127;\r
-\r
-typedef\r
-EFI_STATUS\r
-(*SMBIOS_FIELD_FILLING_FUNCTION) (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE                     * StructureNode,\r
-  IN      UINT32                                    Offset          OPTIONAL,\r
-  IN      VOID                                      *RecordData,\r
-  IN      UINT32                                    RecordDataSize\r
-  );\r
-\r
-typedef struct {\r
-  //\r
-  // Data Hub Data Record's SubClass and RecordNumber\r
-  //\r
-  EFI_GUID                          SubClass;\r
-  UINT32                            RecordType;\r
-\r
-  //\r
-  // Translation method applied\r
-  //\r
-  UINT8                             SmbiosType;\r
-  SMBIOS_STRUCTURE_LOCATING_METHOD  StructureLocatingMethod;\r
-  SMBIOS_FIELD_FILLING_METHOD       FieldFillingMethod;\r
-  UINT32                            FieldOffset;\r
-  SMBIOS_FIELD_FILLING_FUNCTION     FieldFillingFunction;\r
-\r
-} SMBIOS_CONVERSION_TABLE_ENTRY;\r
-\r
-//\r
-// SMBIOS_LINK_DATA_FIXUP nodes indicate the Link fields that\r
-// need to be fixed up when creating the resulting Smbios image.\r
-//\r
-#define SMBIOS_LINK_DATA_FIXUP_NODE_SIGNATURE SIGNATURE_32 ('S', 'm', 'l', 'n')\r
-\r
-typedef struct {\r
-\r
-  UINT32              Signature;\r
-  LIST_ENTRY          Link;\r
-\r
-  UINT32              Offset;\r
-  UINT8               TargetType;\r
-  EFI_GUID            SubClass;\r
-  EFI_INTER_LINK_DATA LinkData;\r
-\r
-} SMBIOS_LINK_DATA_FIXUP_NODE;\r
-\r
-//\r
-// The global Structure List node.\r
-// The Structure List is populated as more and more\r
-// Structures (of various types) are discovered and inserted.\r
-// The nodes in the Structure List will be concatenated\r
-// to form the ultimate SMBIOS table.\r
-//\r
-#define SMBIOS_STRUCTURE_NODE_SIGNATURE SIGNATURE_32 ('S', 'm', 'b', 's')\r
-\r
-struct _SMBIOS_STRUCTURE_NODE {\r
-\r
-  UINT32            Signature;\r
-  LIST_ENTRY        Link;\r
-\r
-  //\r
-  // Tags\r
-  //\r
-  EFI_GUID          SubClass;\r
-  UINT16            Instance;\r
-  UINT16            SubInstance;\r
-  EFI_GUID          ProducerName;\r
-\r
-  //\r
-  // the Smbios structure\r
-  //\r
-  UINT32            StructureSize;        // Actual structure size including strings\r
-\r
-  EFI_SMBIOS_TABLE_HEADER *Structure;\r
-  \r
-  \r
-  EFI_SMBIOS_HANDLE SmbiosHandle;         // Smbios Handle in SMBIOS database.\r
-  \r
-  EFI_SMBIOS_TYPE   SmbiosType;\r
-  \r
-  LIST_ENTRY    LinkDataFixup;\r
-  \r
-};\r
-\r
-//\r
-// Smbios type info table. Indicates minimum length\r
-// for each Smbios type as the indicator of the initial size of buffer\r
-// allocated for the structure instance of a specific type.\r
-//\r
-typedef struct {\r
-\r
-  UINT8   Type;\r
-  UINT8   MinLength;  // Minimal structure size including\r
-  // TWO trailing bytes of 0x00\r
-  //\r
-  BOOLEAN IsRequired; // Required structure type defined by Smbios Spec\r
-  BOOLEAN IsCreated;  // Created in this run\r
-} SMBIOS_TYPE_INFO_TABLE_ENTRY;\r
-\r
-//\r
-// EDK framwork Memory Data hub definition to support EDK/Framework driver.\r
-//\r
-typedef struct {\r
-  STRING_REF                  MemoryDeviceLocator;\r
-  STRING_REF                  MemoryBankLocator;\r
-  STRING_REF                  MemoryManufacturer;\r
-  STRING_REF                  MemorySerialNumber;\r
-  STRING_REF                  MemoryAssetTag;\r
-  STRING_REF                  MemoryPartNumber;\r
-  EFI_INTER_LINK_DATA         MemoryArrayLink;\r
-  EFI_INTER_LINK_DATA         MemorySubArrayLink;\r
-  UINT16                      MemoryTotalWidth;\r
-  UINT16                      MemoryDataWidth;\r
-  UINT64                      MemoryDeviceSize;\r
-  EFI_MEMORY_FORM_FACTOR      MemoryFormFactor;\r
-  UINT8                       MemoryDeviceSet;\r
-  EFI_MEMORY_ARRAY_TYPE       MemoryType;\r
-  EFI_MEMORY_TYPE_DETAIL      MemoryTypeDetail;\r
-  UINT16                      MemorySpeed;\r
-  EFI_MEMORY_STATE            MemoryState;\r
-  UINT8                       MemoryAttributes;\r
-} FRAMEWORK_MEMORY_ARRAY_LINK_DATA;\r
-\r
-typedef struct {\r
-  EFI_MEMORY_ARRAY_LOCATION   MemoryArrayLocation;\r
-  EFI_MEMORY_ARRAY_USE        MemoryArrayUse;\r
-  EFI_MEMORY_ERROR_CORRECTION MemoryErrorCorrection;\r
-  UINT32                      MaximumMemoryCapacity;\r
-  UINT16                      NumberMemoryDevices;\r
-} FRAMEWORK_MEMORY_ARRAY_LOCATION_DATA;\r
-\r
-//\r
-// Global variables\r
-//\r
-extern SMBIOS_CONVERSION_TABLE_ENTRY  mConversionTable[];\r
-extern SMBIOS_TYPE_INFO_TABLE_ENTRY   mTypeInfoTable[];\r
-extern LIST_ENTRY                     mStructureList;\r
-\r
-//\r
-// Function Prototypes\r
-//\r
-/**\r
-  Smbios data filter function. This function is invoked when there is data records\r
-  available in the Data Hub. \r
-\r
-  @param Event         The event that is signaled.\r
-  @param Context       not used here.\r
-**/\r
-VOID\r
-EFIAPI\r
-SmbiosDataFilter (\r
-  IN EFI_EVENT    Event,\r
-  IN VOID         *Context\r
-  );\r
-\r
-//\r
-// Function prototypes\r
-//\r
-/**\r
-  Process a datahub's record and find corresponding translation way to translate\r
-  to SMBIOS record.\r
-  \r
-  @param Record  Point to datahub record.\r
-**/\r
-VOID\r
-SmbiosProcessDataRecord (\r
-  IN EFI_DATA_RECORD_HEADER  *Record\r
-  );\r
-\r
-/**\r
-  Calculate the minimal length for a SMBIOS type. This length maybe not equal\r
-  to sizeof (SMBIOS_RECORD_STRUCTURE), but defined in conformance chapter in SMBIOS specification.\r
-  \r
-  @param Type  SMBIOS's type.\r
-  \r
-  @return the minimal length of a smbios record.\r
-**/\r
-UINT32\r
-SmbiosGetTypeMinimalLength (\r
-  IN UINT8  Type\r
-  );\r
-\r
-/**\r
-  Enlarge the structure buffer of a structure node in SMBIOS database.\r
-  The function maybe lead the structure pointer for SMBIOS record changed.\r
-  \r
-  @param StructureNode The structure node whose structure buffer is to be enlarged.\r
-  @param NewLength     The new length of SMBIOS record which does not include unformat area.\r
-  @param OldBufferSize The old size of SMBIOS record buffer.\r
-  @param NewBufferSize The new size is targeted for enlarged.\r
-  \r
-  @retval EFI_OUT_OF_RESOURCES  No more memory to allocate new record\r
-  @retval EFI_SUCCESS           Success to enlarge the record buffer size.\r
-**/\r
-EFI_STATUS\r
-SmbiosEnlargeStructureBuffer (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE *StructureNode,\r
-  UINT8                         NewLength,\r
-  UINTN                         OldBufferSize,\r
-  UINTN                         NewBufferSize\r
-  );\r
-\r
-/**\r
-  Update the structure buffer of a structure node in SMBIOS database.\r
-  The function lead the structure pointer for SMBIOS record changed.\r
-  \r
-  @param StructureNode The structure node whose structure buffer is to be enlarged.\r
-  @param NewRecord     The new SMBIOS record.\r
-  \r
-**/\r
-VOID\r
-SmbiosUpdateStructureBuffer (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE *StructureNode,\r
-  IN EFI_SMBIOS_TABLE_HEADER    *NewRecord\r
-  );\r
-\r
-/**\r
-  Fill a standard Smbios string field. \r
-  \r
-  This function will convert the unicode string to single byte chars, and only\r
-  English language is supported.\r
-  This function changes the Structure pointer value of the structure node, \r
-  which should be noted by Caller.\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_INVALID_PARAMETER   RecordDataSize is too larger\r
-  @retval EFI_OUT_OF_RESOURCES    No memory to allocate new buffer for string\r
-  @retval EFI_SUCCESS             Sucess append string for a SMBIOS record.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldString (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Fill the inter link field for a SMBIOS recorder.\r
-  \r
-  Some SMBIOS recorder need to reference the handle of another SMBIOS record. But\r
-  maybe another SMBIOS record has not been added, so put the InterLink request into\r
-  a linked list and the interlink will be fixedup when a new SMBIOS record is added.\r
-  \r
-  @param StructureNode        Point to SMBIOS_STRUCTURE_NODE which reference another record's handle\r
-  @param LinkSmbiosNodeOffset The offset in this record for holding the handle of another SMBIOS record\r
-  @param LinkSmbiosType       The type of SMBIOS record want to be linked.\r
-  @param InterLink            Point to EFI_INTER_LINK_DATA will be put linked list.\r
-  @param SubClassGuid         The guid of subclass for linked SMBIOS record.\r
-  \r
-  @retval EFI_SUCESS  The linked record is found and no need fixup in future.\r
-  @retval !EFI_SUCESS The linked record can not be found and InterLink is put a fixing-p linked list.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldInterLink (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT16                    LinkSmbiosNodeOffset,\r
-  IN      UINT8                     LinkSmbiosType,\r
-  IN      EFI_INTER_LINK_DATA       *InterLink,\r
-  IN      EFI_GUID                  *SubClassGuid\r
-  );\r
-\r
-/**\r
-  Find a handle that matches the Link Data and the target Smbios type.\r
-  \r
-  @param  TargetType     the Smbios type\r
-  @param  SubClass       the SubClass\r
-  @param  LinkData       Specifies Instance, SubInstance and ProducerName\r
-  @param  Handle         the HandleNum found  \r
-  \r
-  @retval EFI_NOT_FOUND Can not find the record according to handle\r
-  @retval EFI_SUCCESS   Success to find the handle\r
-**/\r
-EFI_STATUS\r
-SmbiosFindHandle (\r
-  IN      UINT8               TargetType,\r
-  IN      EFI_GUID            *SubClass,\r
-  IN      EFI_INTER_LINK_DATA *LinkData,\r
-  IN OUT  UINT16              *HandleNum\r
-  );\r
-\r
-/**\r
-  Field Filling Function. Transform an EFI_EXP_BASE10_DATA to a word, with 'Mega'\r
-  as the unit.\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_INVALID_PARAMETER  RecordDataSize is invalid. \r
-  @retval EFI_SUCCESS            RecordData is successed to be filled into given SMBIOS record.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldBase10ToWordWithMega (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function. Transform an EFI_EXP_BASE2_DATA to a word, with 'Kilo'\r
-  as the unit. Granularity implemented for Cache Size.\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_INVALID_PARAMETER  RecordDataSize is invalid. \r
-  @retval EFI_SUCCESS            RecordData is successed to be filled into given SMBIOS record.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldBase2ToWordWithKilo (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function: truncate record data to byte and fill in the\r
-  field as indicated by Offset.\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_INVALID_PARAMETER  RecordDataSize is invalid. \r
-  @retval EFI_SUCCESS            RecordData is successed to be filled into given SMBIOS record.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldTruncateToByte (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Processor SubClass record type 6 -- ProcessorID.\r
-  Offset is mandatory.\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
-SmbiosFldProcessorType6 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Processor SubClass record type 9 -- Voltage.\r
-  Offset is mandatory.\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
-SmbiosFldProcessorType9 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Processor SubClass record type 17 -- Cache association.\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
-SmbiosFldProcessorType17 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function. Transform an EFI_EXP_BASE2_DATA to a word, with 10exp-9\r
-  as the unit.\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_INVALID_PARAMETER  RecordDataSize is invalid. \r
-  @retval EFI_SUCCESS            RecordData is successed to be filled into given SMBIOS record.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldBase10ToByteWithNano (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function: truncate record data to byte and fill in the\r
-  field as indicated by Offset.\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_INVALID_PARAMETER  RecordDataSize is invalid. \r
-  @retval EFI_SUCCESS            RecordData is successed to be filled into given SMBIOS record.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldTruncateToWord (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Cache SubClass record type 10 -- Cache Config.\r
-  Offset is mandatory\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
-SmbiosFldCacheType10 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Check if OEM structure has included 2 trailing 0s in data record.\r
-  \r
-  @param RecordData       Point to record data will be checked.\r
-  @param RecordDataSize   The size of record data.\r
-  \r
-  @retval 0    2 trailing 0s exist in unformatted section\r
-  @retval 1    1 trailing 0 exists at the end of unformatted section\r
-  @retval -1   There is no 0 at the end of unformatted section\r
-**/\r
-INT8\r
-SmbiosCheckTrailingZero (\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Cache SubClass record type 5&6 -- Cache SRAM type.\r
-  Offset is mandatory\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
-SmbiosFldCacheType5 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Memory SubClass record type 2 -- Physical Memory\r
-  Array.\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
-SmbiosFldMemoryType2 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Memory SubClass record type 3 -\r
-  - Memory Device: SMBIOS Type 17\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
-SmbiosFldMemoryType3 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Memory SubClass record type 4\r
-  -- Memory Array Mapped Address: SMBIOS Type 19\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
-SmbiosFldMemoryType4 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Memory SubClass record type 5\r
-  -- Memory Device Mapped Address: SMBIOS Type 20\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
-SmbiosFldMemoryType5 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Memory SubClass record type 6\r
-  -- Memory Channel Type: SMBIOS Type 37\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
-SmbiosFldMemoryType6 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Memory SubClass record type 7\r
-  -- Memory Channel Device: SMBIOS Type 37\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
-SmbiosFldMemoryType7 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Memory SubClass record type 8\r
-  -- Memory Controller information: SMBIOS Type 5\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
-SmbiosFldMemoryType8 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Memory SubClass record type \r
-  -- Memory 32 Bit Error Information: SMBIOS Type 18\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
-SmbiosFldMemoryType9 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Memory SubClass record type \r
-  -- Memory 64 Bit Error Information: SMBIOS Type 33\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
-SmbiosFldMemoryType10 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 0 -- Bios Information.\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
-SmbiosFldMiscType0 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function. Transform an EFI_EXP_BASE2_DATA to a byte, with '64k'\r
-  as the unit.\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_INVALID_PARAMETER  RecordDataSize is invalid. \r
-  @retval EFI_SUCCESS            RecordData is successed to be filled into given SMBIOS record.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldBase2ToByteWith64K (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 1 -- System Information.\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
-SmbiosFldMiscType1 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for record type 2 -- Base Board Manufacture.\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
-SmbiosFldMiscType2 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 3 -\r
-  - System Enclosure or Chassis.\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
-SmbiosFldMiscType3 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 8 -- Port Connector.\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
-SmbiosFldMiscType8 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 9 -- System slot.\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
-SmbiosFldMiscType9 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 10 - Onboard Device.\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
-SmbiosFldMiscType10 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 11 - OEM Strings.\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
-SmbiosFldMiscType11 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 12 - System Options.\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
-SmbiosFldMiscType12 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 13 - BIOS Language.\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
-SmbiosFldMiscType13 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 14 - System Language String\r
-  Current solution assumes that EFI_MISC_SYSTEM_LANGUAGE_STRINGs are logged with\r
-  their LanguageId having ascending orders.\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
-SmbiosFldMiscType14 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 15 -- System Event Log.\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
-SmbiosFldMiscType15 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 21 - Pointing Device.\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
-SmbiosFldMiscType21 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 32 -- System Boot Information.\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
-SmbiosFldMiscType32 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 38 -- IPMI device info.\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
-SmbiosFldMiscType38 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 0x80-0xFF -- OEM.\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
-SmbiosFldMiscTypeOEM (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Memory SubClass record type 3 -\r
-  - Memory Device: SMBIOS Type 6\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
-SmbiosFldSMBIOSType6 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 22 - Portable Battery.\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
-SmbiosFldMiscType22 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 22 - Portable Battery.\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
-SmbiosFldMiscType22 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 23 - System Reset.\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
-SmbiosFldMiscType23 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 24 - Hardware Security.\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
-SmbiosFldMiscType24 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 25 - System Power Controls.\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
-SmbiosFldMiscType25 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 26 - Voltage Probe.\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
-SmbiosFldMiscType26 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 27 - Cooling Device.\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
-SmbiosFldMiscType27 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 28 -- Temperature Probe.\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
-SmbiosFldMiscType28 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 29 -- Electrical Current Probe.\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
-SmbiosFldMiscType29 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 30 -- Out-of-Band Remote Access.\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
-SmbiosFldMiscType30 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 34 -- Management Device.\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
-SmbiosFldMiscType34 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\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
-/**\r
-  Field Filling Function for Misc SubClass record type 36 -- Management Device Threshold.\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
-SmbiosFldMiscType36 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 38 -- IPMI device info.\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
-SmbiosFldMiscType38 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 39 -- Power supply.\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
-SmbiosFldMiscType39 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-\r
-/**\r
-  Field Filling Function for Misc SubClass record type 127 - End-of-Table.\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
-SmbiosFldMiscType127 (\r
-  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
-  IN      UINT32                    Offset,\r
-  IN      VOID                      *RecordData,\r
-  IN      UINT32                    RecordDataSize\r
-  );\r
-    \r
-/**\r
-  Create a blank smbios record. The datahub record is only a field of smbios record.\r
-  So before fill any field from datahub's record. A blank smbios record need to be \r
-  created.\r
-  \r
-  @param ProducerHandle   The produce handle for a datahub record\r
-  @param StructureNode    Point to SMBIOS_STRUCTURE_NODE\r
-  \r
-  @retval EFI_OUT_OF_RESOURCES Fail to allocate memory for new blank SMBIOS record.\r
-  @retval EFI_SUCCESS          Success to create blank smbios record.\r
-**/\r
-EFI_STATUS\r
-SmbiosProtocolCreateRecord (\r
-  IN      EFI_HANDLE              ProducerHandle, OPTIONAL\r
-  IN      SMBIOS_STRUCTURE_NODE   *StructureNode\r
-  );\r
-  \r
-/**\r
-  Get pointer of EFI_SMBIOS_PROTOCOL.\r
-  \r
-  @return pointer of EFI_SMBIOS_PROTOCOL.\r
-**/\r
-EFI_SMBIOS_PROTOCOL*\r
-GetSmbiosProtocol (\r
-  VOID\r
-  );\r
-    \r
-/**\r
-  Get pointer of a SMBIOS record's buffer according to its handle.\r
-  \r
-  @param Handle         The handle of SMBIOS record want to be searched.\r
-  @param Type           The type of SMBIOS record want to be searched.\r
-  @param ProducerHandle The producer handle of SMBIOS record.\r
-  \r
-  @return EFI_SMBIOS_TABLE_HEADER Point to a SMBIOS record's buffer.\r
-**/  \r
-EFI_SMBIOS_TABLE_HEADER*\r
-GetSmbiosBufferFromHandle (\r
-  IN  EFI_SMBIOS_HANDLE  Handle,\r
-  IN  EFI_SMBIOS_TYPE    Type,\r
-  IN  EFI_HANDLE         ProducerHandle  OPTIONAL\r
-  );\r
-          \r
-/**\r
-\r
-  Get the full size of smbios structure including optional strings that follow the formatted structure.\r
-\r
-  @param Head                   Pointer to the beginning of smbios structure.\r
-  @param Size                   The returned size.\r
-  @param NumberOfStrings        The returned number of optional strings that follow the formatted structure.\r
-\r
-  @retval EFI_SUCCESS           Size retured in Size.\r
-  @retval EFI_INVALID_PARAMETER Input smbios structure mal-formed or Size is NULL.\r
-  \r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-GetSmbiosStructureSize (\r
-  IN   EFI_SMBIOS_TABLE_HEADER          *Head,\r
-  OUT  UINT32                           *Size,\r
-  OUT  UINT8                            *NumberOfStrings\r
-  );\r
-            \r
-#endif\r