blob: 1e6e10888a6f7a9e38cf97e5895168dc40c10da1 [file] [log] [blame]
Ronak Kanabar1ae366f2023-06-07 01:21:56 +05301/** @file
2 Provides a service to retrieve the PE/COFF entry point from a PE/COFF image.
3
4Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
5SPDX-License-Identifier: BSD-2-Clause-Patent
6
7**/
8
9#ifndef __PE_COFF_GET_ENTRY_POINT_LIB_H__
10#define __PE_COFF_GET_ENTRY_POINT_LIB_H__
11
12/**
13 Retrieves and returns a pointer to the entry point to a PE/COFF image that has been loaded
14 into system memory with the PE/COFF Loader Library functions.
15
16 Retrieves the entry point to the PE/COFF image specified by Pe32Data and returns this entry
17 point in EntryPoint. If the entry point could not be retrieved from the PE/COFF image, then
18 return RETURN_INVALID_PARAMETER. Otherwise return RETURN_SUCCESS.
19 If Pe32Data is NULL, then ASSERT().
20 If EntryPoint is NULL, then ASSERT().
21
22 @param Pe32Data The pointer to the PE/COFF image that is loaded in system memory.
23 @param EntryPoint The pointer to entry point to the PE/COFF image to return.
24
25 @retval RETURN_SUCCESS EntryPoint was returned.
26 @retval RETURN_INVALID_PARAMETER The entry point could not be found in the PE/COFF image.
27
28**/
29RETURN_STATUS
30EFIAPI
31PeCoffLoaderGetEntryPoint (
32 IN VOID *Pe32Data,
33 OUT VOID **EntryPoint
34 );
35
36/**
37 Returns the machine type of a PE/COFF image.
38
39 Returns the machine type from the PE/COFF image specified by Pe32Data.
40 If Pe32Data is NULL, then ASSERT().
41
42 @param Pe32Data The pointer to the PE/COFF image that is loaded in system
43 memory.
44
45 @return Machine type or zero if not a valid image.
46
47**/
48UINT16
49EFIAPI
50PeCoffLoaderGetMachineType (
51 IN VOID *Pe32Data
52 );
53
54/**
55 Returns a pointer to the PDB file name for a PE/COFF image that has been
56 loaded into system memory with the PE/COFF Loader Library functions.
57
58 Returns the PDB file name for the PE/COFF image specified by Pe32Data. If
59 the PE/COFF image specified by Pe32Data is not a valid, then NULL is
60 returned. If the PE/COFF image specified by Pe32Data does not contain a
61 debug directory entry, then NULL is returned. If the debug directory entry
62 in the PE/COFF image specified by Pe32Data does not contain a PDB file name,
63 then NULL is returned.
64 If Pe32Data is NULL, then ASSERT().
65
66 @param Pe32Data The pointer to the PE/COFF image that is loaded in system
67 memory.
68
69 @return The PDB file name for the PE/COFF image specified by Pe32Data, or NULL
70 if it cannot be retrieved.
71
72**/
73VOID *
74EFIAPI
75PeCoffLoaderGetPdbPointer (
76 IN VOID *Pe32Data
77 );
78
79/**
80 Returns the size of the PE/COFF headers
81
82 Returns the size of the PE/COFF header specified by Pe32Data.
83 If Pe32Data is NULL, then ASSERT().
84
85 @param Pe32Data The pointer to the PE/COFF image that is loaded in system
86 memory.
87
88 @return Size of PE/COFF header in bytes, or zero if not a valid image.
89
90**/
91UINT32
92EFIAPI
93PeCoffGetSizeOfHeaders (
94 IN VOID *Pe32Data
95 );
96
97/**
98 Returns PE/COFF image base specified by the address in this PE/COFF image.
99
100 On DEBUG build, searches the PE/COFF image base forward the address in this
101 PE/COFF image and returns it.
102
103 @param Address Address located in one PE/COFF image.
104
105 @retval 0 RELEASE build or cannot find the PE/COFF image base.
106 @retval others PE/COFF image base found.
107
108**/
109UINTN
110EFIAPI
111PeCoffSearchImageBase (
112 IN UINTN Address
113 );
114
115#endif