| /** @file | |
| GUID and data structures for communication between SMM Base on SMM Base2 Thunk driver | |
| and SmmBaseHelper driver. | |
| Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR> | |
| This program and the accompanying materials | |
| are licensed and made available under the terms and conditions of the BSD License | |
| which accompanies this distribution. The full text of the license may be found at | |
| http://opensource.org/licenses/bsd-license.php. | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| **/ | |
| #ifndef _SMM_BASE_THUNK_COMMUNICATION_H_ | |
| #define _SMM_BASE_THUNK_COMMUNICATION_H_ | |
| #include <Protocol/SmmBase.h> | |
| #define EFI_SMM_BASE_THUNK_COMMUNICATION_GUID \ | |
| { 0x6568a3d6, 0x15f, 0x4b4a, { 0x9c, 0x89, 0x1d, 0x14, 0x63, 0x14, 0x13, 0xa } } | |
| typedef struct { | |
| EFI_DEVICE_PATH_PROTOCOL *FilePath; | |
| VOID *SourceBuffer; | |
| UINTN SourceSize; | |
| EFI_HANDLE *ImageHandle; | |
| BOOLEAN LegacyIA32Binary; | |
| } SMMBASE_REGISTER_ARG; | |
| typedef struct { | |
| EFI_HANDLE ImageHandle; | |
| } SMMBASE_UNREGISTER_ARG; | |
| typedef struct { | |
| EFI_HANDLE SmmImageHandle; | |
| EFI_SMM_CALLBACK_ENTRY_POINT CallbackAddress; | |
| BOOLEAN MakeLast; | |
| BOOLEAN FloatingPointSave; | |
| } SMMBASE_REGISTER_CALLBACK_ARG; | |
| typedef struct { | |
| EFI_MEMORY_TYPE PoolType; | |
| UINTN Size; | |
| VOID **Buffer; | |
| } SMMBASE_ALLOCATE_POOL_ARG; | |
| typedef struct { | |
| VOID *Buffer; | |
| } SMMBASE_FREE_POOL_ARG; | |
| typedef struct { | |
| EFI_HANDLE ImageHandle; | |
| VOID *CommunicationBuffer; | |
| UINTN *SourceSize; | |
| } SMMBASE_COMMUNICATE_ARG; | |
| typedef union { | |
| SMMBASE_REGISTER_ARG Register; | |
| SMMBASE_UNREGISTER_ARG UnRegister; | |
| SMMBASE_REGISTER_CALLBACK_ARG RegisterCallback; | |
| SMMBASE_ALLOCATE_POOL_ARG AllocatePool; | |
| SMMBASE_FREE_POOL_ARG FreePool; | |
| SMMBASE_COMMUNICATE_ARG Communicate; | |
| } SMMBASE_FUNCTION_ARGS; | |
| typedef enum { | |
| SmmBaseFunctionRegister, | |
| SmmBaseFunctionUnregister, | |
| SmmBaseFunctionRegisterCallback, | |
| SmmBaseFunctionAllocatePool, | |
| SmmBaseFunctionFreePool, | |
| SmmBaseFunctionCommunicate | |
| } SMMBASE_FUNCTION; | |
| typedef struct { | |
| SMMBASE_FUNCTION Function; | |
| EFI_STATUS Status; | |
| SMMBASE_FUNCTION_ARGS Args; | |
| EFI_HANDLE SmmBaseImageHandle; | |
| } SMMBASE_FUNCTION_DATA; | |
| #pragma pack(1) | |
| typedef struct { | |
| EFI_GUID HeaderGuid; | |
| UINTN MessageLength; | |
| SMMBASE_FUNCTION_DATA FunctionData; | |
| } SMMBASETHUNK_COMMUNICATION_DATA; | |
| #pragma pack() | |
| extern EFI_GUID gEfiSmmBaseThunkCommunicationGuid; | |
| #endif | |