-/*++\r
+/**@file\r
\r
-Copyright (c) 2006, Intel Corporation \r
-All rights reserved. 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
+Copyright (c) 2006 - 2011, 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
Module Name:\r
\r
\r
Header file for MiscSubclass Driver.\r
\r
---*/\r
+**/\r
\r
#ifndef _MISC_SUBCLASS_DRIVER_H\r
#define _MISC_SUBCLASS_DRIVER_H\r
\r
-\r
-//\r
-// Include common header file for this module.\r
-//\r
-#include "CommonHeader.h"\r
-\r
+#include <FrameworkDxe.h>\r
+#include <WinNtDxe.h>\r
+#include <Guid/DataHubRecords.h>\r
+#include <IndustryStandard/SmBios.h>\r
+#include <Protocol/Smbios.h>\r
+#include <Protocol/WinNtIo.h>\r
+#include <Library/BaseLib.h>\r
+#include <Library/DebugLib.h>\r
+#include <Library/HiiLib.h>\r
+#include <Library/UefiLib.h>\r
+#include <Library/UefiDriverEntryPoint.h>\r
+#include <Library/BaseMemoryLib.h>\r
+#include <Library/UefiBootServicesTableLib.h>\r
+#include <Library/DevicePathLib.h>\r
+#include <Library/PcdLib.h>\r
+#include <Library/MemoryAllocationLib.h>\r
#include <MiscDevicePath.h>\r
\r
-//\r
-// Autogen string file\r
-//\r
-#include <MiscSubclassStrDefs.h>\r
\r
//\r
// Data table entry update function.\r
//\r
-typedef \r
-EFI_STATUS \r
-(EFIAPI EFI_MISC_SUBCLASS_DATA_FUNCTION) (\r
- IN UINT16 RecordType,\r
- IN UINT32 *RecordLen,\r
- IN OUT EFI_MISC_SUBCLASS_RECORDS *RecordData,\r
- OUT BOOLEAN *LogRecordData\r
+typedef EFI_STATUS (EFIAPI EFI_MISC_SMBIOS_DATA_FUNCTION) (\r
+ IN VOID *RecordData,\r
+ IN EFI_SMBIOS_PROTOCOL *Smbios\r
);\r
\r
//\r
// Data table entry definition.\r
//\r
typedef struct {\r
- UINT16 RecordType;\r
- UINT32 RecordLen;\r
- VOID *RecordData;\r
- EFI_MISC_SUBCLASS_DATA_FUNCTION *Function;\r
-} EFI_MISC_SUBCLASS_DATA_TABLE;\r
+ //\r
+ // intermediat input data for SMBIOS record\r
+ //\r
+ VOID *RecordData;\r
+ EFI_MISC_SMBIOS_DATA_FUNCTION *Function;\r
+} EFI_MISC_SMBIOS_DATA_TABLE;\r
\r
//\r
// Data Table extern definitions.\r
//\r
-#define MISC_SUBCLASS_TABLE_EXTERNS(NAME1, NAME2) \\r
- extern NAME1 NAME2 ## Data; \\r
- extern EFI_MISC_SUBCLASS_DATA_FUNCTION NAME2 ## Function\r
+#define MISC_SMBIOS_TABLE_EXTERNS(NAME1, NAME2, NAME3) \\r
+extern NAME1 NAME2 ## Data; \\r
+extern EFI_MISC_SMBIOS_DATA_FUNCTION NAME3 ## Function\r
+\r
\r
//\r
// Data Table entries\r
//\r
-#define MISC_SUBCLASS_TABLE_ENTRY_DATA_ONLY(NAME1, NAME2) { \\r
- NAME1 ## _RECORD_NUMBER, sizeof (NAME1 ## _DATA), &NAME2 ## Data, NULL \\r
- }\r
-\r
-#define MISC_SUBCLASS_TABLE_ENTRY_FUNCTION_ONLY(NAME1, NAME2) \\r
- { \\r
- NAME1 ## _RECORD_NUMBER, 0, NULL, &NAME2 ## Function \\r
- }\r
-\r
-#define MISC_SUBCLASS_TABLE_ENTRY_DATA_AND_FUNCTION(NAME1, NAME2, NAME3) \\r
- { \\r
- NAME1 ## _RECORD_NUMBER, sizeof (NAME1 ## _DATA), &NAME2 ## Data, &NAME3 ## Function \\r
- }\r
+#define MISC_SMBIOS_TABLE_ENTRY_DATA_AND_FUNCTION(NAME1, NAME2) \\r
+{ \\r
+ & NAME1 ## Data, \\r
+ & NAME2 ## Function \\r
+}\r
\r
//\r
// Global definition macros.\r
//\r
-#define MISC_SUBCLASS_TABLE_DATA(NAME1, NAME2) NAME1 NAME2 ## Data\r
-\r
-#define MISC_SUBCLASS_TABLE_FUNCTION(NAME2) \\r
- EFI_STATUS EFIAPI NAME2 ## Function ( \\r
- IN UINT16 RecordType, \\r
- IN UINT32 *RecordLen, \\r
- IN OUT EFI_MISC_SUBCLASS_RECORDS * RecordData, \\r
- OUT BOOLEAN *LogRecordData \\r
+#define MISC_SMBIOS_TABLE_DATA(NAME1, NAME2) \\r
+ NAME1 NAME2 ## Data\r
+\r
+#define MISC_SMBIOS_TABLE_FUNCTION(NAME2) \\r
+ EFI_STATUS EFIAPI NAME2 ## Function( \\r
+ IN VOID *RecordData, \\r
+ IN EFI_SMBIOS_PROTOCOL *Smbios \\r
)\r
\r
+\r
//\r
// Data Table Array\r
//\r
-extern EFI_MISC_SUBCLASS_DATA_TABLE mMiscSubclassDataTable[];\r
+extern EFI_MISC_SMBIOS_DATA_TABLE mMiscSubclassDataTable[];\r
\r
//\r
// Data Table Array Entries\r
//\r
-extern UINTN mMiscSubclassDataTableEntries;\r
+extern UINTN mMiscSubclassDataTableEntries;\r
+extern UINT8 MiscSubclassStrings[];\r
+extern EFI_HII_HANDLE mHiiHandle;\r
+\r
+\r
+/**\r
+ Add an SMBIOS record.\r
+\r
+ @param Smbios The EFI_SMBIOS_PROTOCOL instance.\r
+ @param SmbiosHandle A unique handle will be assigned to the SMBIOS record.\r
+ @param Record The data for the fixed portion of the SMBIOS record. The format of the record is\r
+ determined by EFI_SMBIOS_TABLE_HEADER.Type. The size of the formatted area is defined \r
+ by EFI_SMBIOS_TABLE_HEADER.Length and either followed by a double-null (0x0000) or \r
+ a set of null terminated strings and a null.\r
+\r
+ @retval EFI_SUCCESS Record was added.\r
+ @retval EFI_OUT_OF_RESOURCES Record was not added due to lack of system resources.\r
+\r
+**/\r
+EFI_STATUS\r
+AddSmbiosRecord (\r
+ IN EFI_SMBIOS_PROTOCOL *Smbios,\r
+ OUT EFI_SMBIOS_HANDLE *SmbiosHandle,\r
+ IN EFI_SMBIOS_TABLE_HEADER *Record\r
+ );\r
\r
#endif /* _MISC_SUBCLASS_DRIVER_H */\r
\r