--- /dev/null
+/*++\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
+\r
+Module Name:\r
+\r
+ MiscSubclassDriver.h\r
+\r
+Abstract:\r
+\r
+ Header file for MiscSubclass Driver.\r
+\r
+--*/\r
+\r
+#ifndef _MISC_SUBCLASS_DRIVER_H\r
+#define _MISC_SUBCLASS_DRIVER_H\r
+\r
+\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
+ );\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
+//\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
+\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
+\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
+ )\r
+\r
+//\r
+// Data Table Array\r
+//\r
+extern EFI_MISC_SUBCLASS_DATA_TABLE mMiscSubclassDataTable[];\r
+\r
+//\r
+// Data Table Array Entries\r
+//\r
+extern UINTN mMiscSubclassDataTableEntries;\r
+\r
+#endif /* _MISC_SUBCLASS_DRIVER_H */\r
+\r
+/* eof - MiscSubclassDriver.h */\r