3 Copyright (c) 2005 - 2010, Intel Corporation. All rights reserved.<BR>
4 This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 GUID for the PE/COFF Loader APIs shared between PEI and DXE
22 #ifndef _PEI_PE_COFF_LOADER_H_
23 #define _PEI_PE_COFF_LOADER_H_
27 #define EFI_PEI_PE_COFF_LOADER_GUID \
28 { 0xd8117cff, 0x94a6, 0x11d4, {0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
30 EFI_FORWARD_DECLARATION (EFI_PEI_PE_COFF_LOADER_PROTOCOL
);
32 #define EFI_IMAGE_ERROR_SUCCESS 0
33 #define EFI_IMAGE_ERROR_IMAGE_READ 1
34 #define EFI_IMAGE_ERROR_INVALID_PE_HEADER_SIGNATURE 2
35 #define EFI_IMAGE_ERROR_INVALID_MACHINE_TYPE 3
36 #define EFI_IMAGE_ERROR_INVALID_SUBSYSTEM 4
37 #define EFI_IMAGE_ERROR_INVALID_IMAGE_ADDRESS 5
38 #define EFI_IMAGE_ERROR_INVALID_IMAGE_SIZE 6
39 #define EFI_IMAGE_ERROR_INVALID_SECTION_ALIGNMENT 7
40 #define EFI_IMAGE_ERROR_SECTION_NOT_LOADED 8
41 #define EFI_IMAGE_ERROR_FAILED_RELOCATION 9
42 #define EFI_IMAGE_ERROR_FAILED_ICACHE_FLUSH 10
46 (EFIAPI
*EFI_PEI_PE_COFF_LOADER_READ_FILE
) (
49 IN OUT UINTN
*ReadSize
,
54 EFI_PHYSICAL_ADDRESS ImageAddress
;
56 EFI_PHYSICAL_ADDRESS DestinationAddress
;
57 EFI_PHYSICAL_ADDRESS EntryPoint
;
58 EFI_PEI_PE_COFF_LOADER_READ_FILE ImageRead
;
61 UINT32 SectionAlignment
;
62 UINT32 PeCoffHeaderOffset
;
63 UINT32 DebugDirectoryEntryRva
;
67 UINT32 ImageCodeMemoryType
;
68 UINT32 ImageDataMemoryType
;
73 BOOLEAN RelocationsStripped
;
75 #ifdef EFI_NT_EMULATOR
78 #if (EFI_SPECIFICATION_VERSION >= 0x0002000A)
79 EFI_PHYSICAL_ADDRESS HiiResourceData
;
81 } EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT
;
85 (EFIAPI
*EFI_PEI_PE_COFF_LOADER_GET_IMAGE_INFO
) (
86 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL
*This
,
87 IN OUT EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
92 (EFIAPI
*EFI_PEI_PE_COFF_LOADER_LOAD_IMAGE
) (
93 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL
*This
,
94 IN OUT EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
99 (EFIAPI
*EFI_PEI_PE_COFF_LOADER_RELOCATE_IMAGE
) (
100 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL
*This
,
101 IN OUT EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
106 (EFIAPI
*EFI_PEI_PE_COFF_LOADER_UNLOAD_IMAGE
) (
107 IN EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
110 struct _EFI_PEI_PE_COFF_LOADER_PROTOCOL
{
111 EFI_PEI_PE_COFF_LOADER_GET_IMAGE_INFO GetImageInfo
;
112 EFI_PEI_PE_COFF_LOADER_LOAD_IMAGE LoadImage
;
113 EFI_PEI_PE_COFF_LOADER_RELOCATE_IMAGE RelocateImage
;
114 EFI_PEI_PE_COFF_LOADER_UNLOAD_IMAGE UnloadImage
;
117 extern EFI_GUID gEfiPeiPeCoffLoaderGuid
;