/*++ | |
Copyright (c) 2005 - 2006, Intel Corporation | |
All rights reserved. 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. | |
Module Name: | |
PeiPeCoffLoader.h | |
Abstract: | |
GUID for the PE/COFF Loader APIs shared between PEI and DXE | |
--*/ | |
#ifndef _PEI_PE_COFF_LOADER_H_ | |
#define _PEI_PE_COFF_LOADER_H_ | |
#include "EfiImage.h" | |
#define EFI_PEI_PE_COFF_LOADER_GUID \ | |
{ 0xd8117cff, 0x94a6, 0x11d4, {0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } | |
EFI_FORWARD_DECLARATION (EFI_PEI_PE_COFF_LOADER_PROTOCOL); | |
#define EFI_IMAGE_ERROR_SUCCESS 0 | |
#define EFI_IMAGE_ERROR_IMAGE_READ 1 | |
#define EFI_IMAGE_ERROR_INVALID_PE_HEADER_SIGNATURE 2 | |
#define EFI_IMAGE_ERROR_INVALID_MACHINE_TYPE 3 | |
#define EFI_IMAGE_ERROR_INVALID_SUBSYSTEM 4 | |
#define EFI_IMAGE_ERROR_INVALID_IMAGE_ADDRESS 5 | |
#define EFI_IMAGE_ERROR_INVALID_IMAGE_SIZE 6 | |
#define EFI_IMAGE_ERROR_INVALID_SECTION_ALIGNMENT 7 | |
#define EFI_IMAGE_ERROR_SECTION_NOT_LOADED 8 | |
#define EFI_IMAGE_ERROR_FAILED_RELOCATION 9 | |
#define EFI_IMAGE_ERROR_FAILED_ICACHE_FLUSH 10 | |
typedef | |
EFI_STATUS | |
(EFIAPI *EFI_PEI_PE_COFF_LOADER_READ_FILE) ( | |
IN VOID *FileHandle, | |
IN UINTN FileOffset, | |
IN OUT UINTN *ReadSize, | |
OUT VOID *Buffer | |
); | |
typedef struct { | |
EFI_PHYSICAL_ADDRESS ImageAddress; | |
UINT64 ImageSize; | |
EFI_PHYSICAL_ADDRESS DestinationAddress; | |
EFI_PHYSICAL_ADDRESS EntryPoint; | |
EFI_PEI_PE_COFF_LOADER_READ_FILE ImageRead; | |
VOID *Handle; | |
VOID *FixupData; | |
UINT32 SectionAlignment; | |
UINT32 PeCoffHeaderOffset; | |
UINT32 DebugDirectoryEntryRva; | |
VOID *CodeView; | |
CHAR8 *PdbPointer; | |
UINTN SizeOfHeaders; | |
UINT32 ImageCodeMemoryType; | |
UINT32 ImageDataMemoryType; | |
UINT32 ImageError; | |
UINTN FixupDataSize; | |
UINT16 Machine; | |
UINT16 ImageType; | |
BOOLEAN RelocationsStripped; | |
BOOLEAN IsTeImage; | |
#ifdef EFI_NT_EMULATOR | |
VOID **ModHandle; | |
#endif | |
} EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT; | |
typedef | |
EFI_STATUS | |
(EFIAPI *EFI_PEI_PE_COFF_LOADER_GET_IMAGE_INFO) ( | |
IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This, | |
IN OUT EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext | |
); | |
typedef | |
EFI_STATUS | |
(EFIAPI *EFI_PEI_PE_COFF_LOADER_LOAD_IMAGE) ( | |
IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This, | |
IN OUT EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext | |
); | |
typedef | |
EFI_STATUS | |
(EFIAPI *EFI_PEI_PE_COFF_LOADER_RELOCATE_IMAGE) ( | |
IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This, | |
IN OUT EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext | |
); | |
typedef | |
EFI_STATUS | |
(EFIAPI *EFI_PEI_PE_COFF_LOADER_UNLOAD_IMAGE) ( | |
IN EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext | |
); | |
struct _EFI_PEI_PE_COFF_LOADER_PROTOCOL { | |
EFI_PEI_PE_COFF_LOADER_GET_IMAGE_INFO GetImageInfo; | |
EFI_PEI_PE_COFF_LOADER_LOAD_IMAGE LoadImage; | |
EFI_PEI_PE_COFF_LOADER_RELOCATE_IMAGE RelocateImage; | |
EFI_PEI_PE_COFF_LOADER_UNLOAD_IMAGE UnloadImage; | |
}; | |
extern EFI_GUID gEfiPeiPeCoffLoaderGuid; | |
#endif |