]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/Library/PeCoffGetEntryPointLib.h
647503bec6df445b073e248bf038223a5040f78e
[mirror_edk2.git] / MdePkg / Include / Library / PeCoffGetEntryPointLib.h
1 /** @file
2 Provides a service to retrieve the PE/COFF entry point from a PE/COFF image.
3
4 Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials are licensed and made available under
6 the terms and conditions of the BSD License that accompanies this distribution.
7 The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php.
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 #ifndef __PE_COFF_GET_ENTRY_POINT_LIB_H__
16 #define __PE_COFF_GET_ENTRY_POINT_LIB_H__
17
18 /**
19 Retrieves and returns a pointer to the entry point to a PE/COFF image that has been loaded
20 into system memory with the PE/COFF Loader Library functions.
21
22 Retrieves the entry point to the PE/COFF image specified by Pe32Data and returns this entry
23 point in EntryPoint. If the entry point could not be retrieved from the PE/COFF image, then
24 return RETURN_INVALID_PARAMETER. Otherwise return RETURN_SUCCESS.
25 If Pe32Data is NULL, then ASSERT().
26 If EntryPoint is NULL, then ASSERT().
27
28 @param Pe32Data The pointer to the PE/COFF image that is loaded in system memory.
29 @param EntryPoint The pointer to entry point to the PE/COFF image to return.
30
31 @retval RETURN_SUCCESS EntryPoint was returned.
32 @retval RETURN_INVALID_PARAMETER The entry point could not be found in the PE/COFF image.
33
34 **/
35 RETURN_STATUS
36 EFIAPI
37 PeCoffLoaderGetEntryPoint (
38 IN VOID *Pe32Data,
39 OUT VOID **EntryPoint
40 );
41
42 /**
43 Returns the machine type of a PE/COFF image.
44
45 Returns the machine type from the PE/COFF image specified by Pe32Data.
46 If Pe32Data is NULL, then ASSERT().
47
48 @param Pe32Data The pointer to the PE/COFF image that is loaded in system
49 memory.
50
51 @return Machine type or zero if not a valid image.
52
53 **/
54 UINT16
55 EFIAPI
56 PeCoffLoaderGetMachineType (
57 IN VOID *Pe32Data
58 );
59
60 /**
61 Returns a pointer to the PDB file name for a PE/COFF image that has been
62 loaded into system memory with the PE/COFF Loader Library functions.
63
64 Returns the PDB file name for the PE/COFF image specified by Pe32Data. If
65 the PE/COFF image specified by Pe32Data is not a valid, then NULL is
66 returned. If the PE/COFF image specified by Pe32Data does not contain a
67 debug directory entry, then NULL is returned. If the debug directory entry
68 in the PE/COFF image specified by Pe32Data does not contain a PDB file name,
69 then NULL is returned.
70 If Pe32Data is NULL, then ASSERT().
71
72 @param Pe32Data The pointer to the PE/COFF image that is loaded in system
73 memory.
74
75 @return The PDB file name for the PE/COFF image specified by Pe32Data, or NULL
76 if it cannot be retrieved.
77
78 **/
79 VOID *
80 EFIAPI
81 PeCoffLoaderGetPdbPointer (
82 IN VOID *Pe32Data
83 );
84
85
86 /**
87 Returns the size of the PE/COFF headers
88
89 Returns the size of the PE/COFF header specified by Pe32Data.
90 If Pe32Data is NULL, then ASSERT().
91
92 @param Pe32Data The pointer to the PE/COFF image that is loaded in system
93 memory.
94
95 @return Size of PE/COFF header in bytes, or zero if not a valid image.
96
97 **/
98 UINT32
99 EFIAPI
100 PeCoffGetSizeOfHeaders (
101 IN VOID *Pe32Data
102 );
103
104 /**
105 Returns PE/COFF image base specified by the address in this PE/COFF image.
106
107 On DEBUG build, searches the PE/COFF image base forward the address in this
108 PE/COFF image and returns it.
109
110 @param Address Address located in one PE/COFF image.
111
112 @retval 0 RELEASE build or cannot find the PE/COFF image base.
113 @retval others PE/COFF image base found.
114
115 **/
116 UINTN
117 EFIAPI
118 PeCoffSerachImageBase (
119 IN UINTN Address
120 );
121
122 #endif