]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Guid/PeiPeCoffLoader/PeiPeCoffLoader.h
Update the copyright notice format
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Guid / PeiPeCoffLoader / PeiPeCoffLoader.h
1 /*++
2
3 Copyright (c) 2005 - 2006, 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
8
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.
11
12 Module Name:
13
14 PeiPeCoffLoader.h
15
16 Abstract:
17
18 GUID for the PE/COFF Loader APIs shared between PEI and DXE
19
20 --*/
21
22 #ifndef _PEI_PE_COFF_LOADER_H_
23 #define _PEI_PE_COFF_LOADER_H_
24
25 #include "EfiImage.h"
26
27 #define EFI_PEI_PE_COFF_LOADER_GUID \
28 { 0xd8117cff, 0x94a6, 0x11d4, {0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
29
30 EFI_FORWARD_DECLARATION (EFI_PEI_PE_COFF_LOADER_PROTOCOL);
31
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
43
44 typedef
45 EFI_STATUS
46 (EFIAPI *EFI_PEI_PE_COFF_LOADER_READ_FILE) (
47 IN VOID *FileHandle,
48 IN UINTN FileOffset,
49 IN OUT UINTN *ReadSize,
50 OUT VOID *Buffer
51 );
52
53 typedef struct {
54 EFI_PHYSICAL_ADDRESS ImageAddress;
55 UINT64 ImageSize;
56 EFI_PHYSICAL_ADDRESS DestinationAddress;
57 EFI_PHYSICAL_ADDRESS EntryPoint;
58 EFI_PEI_PE_COFF_LOADER_READ_FILE ImageRead;
59 VOID *Handle;
60 VOID *FixupData;
61 UINT32 SectionAlignment;
62 UINT32 PeCoffHeaderOffset;
63 UINT32 DebugDirectoryEntryRva;
64 VOID *CodeView;
65 CHAR8 *PdbPointer;
66 UINTN SizeOfHeaders;
67 UINT32 ImageCodeMemoryType;
68 UINT32 ImageDataMemoryType;
69 UINT32 ImageError;
70 UINTN FixupDataSize;
71 UINT16 Machine;
72 UINT16 ImageType;
73 BOOLEAN RelocationsStripped;
74 BOOLEAN IsTeImage;
75 #ifdef EFI_NT_EMULATOR
76 VOID **ModHandle;
77 #endif
78 } EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT;
79
80 typedef
81 EFI_STATUS
82 (EFIAPI *EFI_PEI_PE_COFF_LOADER_GET_IMAGE_INFO) (
83 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This,
84 IN OUT EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
85 );
86
87 typedef
88 EFI_STATUS
89 (EFIAPI *EFI_PEI_PE_COFF_LOADER_LOAD_IMAGE) (
90 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This,
91 IN OUT EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
92 );
93
94 typedef
95 EFI_STATUS
96 (EFIAPI *EFI_PEI_PE_COFF_LOADER_RELOCATE_IMAGE) (
97 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This,
98 IN OUT EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
99 );
100
101 typedef
102 EFI_STATUS
103 (EFIAPI *EFI_PEI_PE_COFF_LOADER_UNLOAD_IMAGE) (
104 IN EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
105 );
106
107 struct _EFI_PEI_PE_COFF_LOADER_PROTOCOL {
108 EFI_PEI_PE_COFF_LOADER_GET_IMAGE_INFO GetImageInfo;
109 EFI_PEI_PE_COFF_LOADER_LOAD_IMAGE LoadImage;
110 EFI_PEI_PE_COFF_LOADER_RELOCATE_IMAGE RelocateImage;
111 EFI_PEI_PE_COFF_LOADER_UNLOAD_IMAGE UnloadImage;
112 };
113
114 extern EFI_GUID gEfiPeiPeCoffLoaderGuid;
115
116 #endif