--- /dev/null
+/** @file\r
+ GUID and data structures for communication between SMM Base on SMM Base2 Thunk driver\r
+ and SmmBaseHelper driver.\r
+\r
+ Copyright (c) 2009, 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
+**/\r
+#ifndef _SMM_BASE_THUNK_COMMUNICATION_H_\r
+#define _SMM_BASE_THUNK_COMMUNICATION_H_\r
+\r
+#include <Protocol/SmmBase.h>\r
+\r
+#define EFI_SMM_BASE_THUNK_COMMUNICATION_GUID \\r
+ { 0x6568a3d6, 0x15f, 0x4b4a, { 0x9c, 0x89, 0x1d, 0x14, 0x63, 0x14, 0x13, 0xa } }\r
+\r
+typedef struct {\r
+ EFI_DEVICE_PATH_PROTOCOL *FilePath;\r
+ VOID *SourceBuffer;\r
+ UINTN SourceSize;\r
+ EFI_HANDLE *ImageHandle;\r
+ BOOLEAN LegacyIA32Binary;\r
+} SMMBASE_REGISTER_ARG;\r
+\r
+typedef struct {\r
+ EFI_HANDLE ImageHandle;\r
+} SMMBASE_UNREGISTER_ARG;\r
+\r
+typedef struct {\r
+ EFI_HANDLE SmmImageHandle;\r
+ EFI_SMM_CALLBACK_ENTRY_POINT CallbackAddress;\r
+ BOOLEAN MakeLast;\r
+ BOOLEAN FloatingPointSave;\r
+} SMMBASE_REGISTER_CALLBACK_ARG;\r
+\r
+typedef struct {\r
+ EFI_MEMORY_TYPE PoolType;\r
+ UINTN Size;\r
+ VOID **Buffer;\r
+} SMMBASE_ALLOCATE_POOL_ARG;\r
+\r
+typedef struct {\r
+ VOID *Buffer;\r
+} SMMBASE_FREE_POOL_ARG;\r
+\r
+typedef union {\r
+ SMMBASE_REGISTER_ARG Register;\r
+ SMMBASE_UNREGISTER_ARG UnRegister;\r
+ SMMBASE_REGISTER_CALLBACK_ARG RegisterCallback;\r
+ SMMBASE_ALLOCATE_POOL_ARG AllocatePool;\r
+ SMMBASE_FREE_POOL_ARG FreePool;\r
+} SMMBASE_FUNCTION_ARGS;\r
+\r
+typedef enum {\r
+ SMMBASE_REGISTER,\r
+ SMMBASE_UNREGISTER,\r
+ SMMBASE_REGISTER_CALLBACK,\r
+ SMMBASE_ALLOCATE_POOL,\r
+ SMMBASE_FREE_POOL,\r
+} SMMBASE_FUNCTION;\r
+\r
+typedef struct {\r
+ SMMBASE_FUNCTION Function;\r
+ EFI_STATUS Status;\r
+ SMMBASE_FUNCTION_ARGS Args;\r
+} SMMBASE_FUNCTION_DATA;\r
+\r
+#pragma pack(1)\r
+typedef struct {\r
+ EFI_GUID HeaderGuid;\r
+ UINTN MessageLength;\r
+ SMMBASE_FUNCTION_DATA FunctionData;\r
+} SMMBASETHUNK_COMMUNICATION_DATA;\r
+#pragma pack()\r
+\r
+extern EFI_GUID gEfiSmmBaseThunkCommunicationGuid;\r
+\r
+#endif\r
+\r