| /** @file |
| Provides a service to retrieve the PE/COFF entry point from a PE/COFF image. |
| |
| Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> |
| SPDX-License-Identifier: BSD-2-Clause-Patent |
| |
| **/ |
| |
| #ifndef __PE_COFF_GET_ENTRY_POINT_LIB_H__ |
| #define __PE_COFF_GET_ENTRY_POINT_LIB_H__ |
| |
| /** |
| Retrieves and returns a pointer to the entry point to a PE/COFF image that has been loaded |
| into system memory with the PE/COFF Loader Library functions. |
| |
| Retrieves the entry point to the PE/COFF image specified by Pe32Data and returns this entry |
| point in EntryPoint. If the entry point could not be retrieved from the PE/COFF image, then |
| return RETURN_INVALID_PARAMETER. Otherwise return RETURN_SUCCESS. |
| If Pe32Data is NULL, then ASSERT(). |
| If EntryPoint is NULL, then ASSERT(). |
| |
| @param Pe32Data The pointer to the PE/COFF image that is loaded in system memory. |
| @param EntryPoint The pointer to entry point to the PE/COFF image to return. |
| |
| @retval RETURN_SUCCESS EntryPoint was returned. |
| @retval RETURN_INVALID_PARAMETER The entry point could not be found in the PE/COFF image. |
| |
| **/ |
| RETURN_STATUS |
| EFIAPI |
| PeCoffLoaderGetEntryPoint ( |
| IN VOID *Pe32Data, |
| OUT VOID **EntryPoint |
| ); |
| |
| /** |
| Returns the machine type of a PE/COFF image. |
| |
| Returns the machine type from the PE/COFF image specified by Pe32Data. |
| If Pe32Data is NULL, then ASSERT(). |
| |
| @param Pe32Data The pointer to the PE/COFF image that is loaded in system |
| memory. |
| |
| @return Machine type or zero if not a valid image. |
| |
| **/ |
| UINT16 |
| EFIAPI |
| PeCoffLoaderGetMachineType ( |
| IN VOID *Pe32Data |
| ); |
| |
| /** |
| Returns a pointer to the PDB file name for a PE/COFF image that has been |
| loaded into system memory with the PE/COFF Loader Library functions. |
| |
| Returns the PDB file name for the PE/COFF image specified by Pe32Data. If |
| the PE/COFF image specified by Pe32Data is not a valid, then NULL is |
| returned. If the PE/COFF image specified by Pe32Data does not contain a |
| debug directory entry, then NULL is returned. If the debug directory entry |
| in the PE/COFF image specified by Pe32Data does not contain a PDB file name, |
| then NULL is returned. |
| If Pe32Data is NULL, then ASSERT(). |
| |
| @param Pe32Data The pointer to the PE/COFF image that is loaded in system |
| memory. |
| |
| @return The PDB file name for the PE/COFF image specified by Pe32Data, or NULL |
| if it cannot be retrieved. |
| |
| **/ |
| VOID * |
| EFIAPI |
| PeCoffLoaderGetPdbPointer ( |
| IN VOID *Pe32Data |
| ); |
| |
| |
| /** |
| Returns the size of the PE/COFF headers |
| |
| Returns the size of the PE/COFF header specified by Pe32Data. |
| If Pe32Data is NULL, then ASSERT(). |
| |
| @param Pe32Data The pointer to the PE/COFF image that is loaded in system |
| memory. |
| |
| @return Size of PE/COFF header in bytes, or zero if not a valid image. |
| |
| **/ |
| UINT32 |
| EFIAPI |
| PeCoffGetSizeOfHeaders ( |
| IN VOID *Pe32Data |
| ); |
| |
| /** |
| Returns PE/COFF image base specified by the address in this PE/COFF image. |
| |
| On DEBUG build, searches the PE/COFF image base forward the address in this |
| PE/COFF image and returns it. |
| |
| @param Address Address located in one PE/COFF image. |
| |
| @retval 0 RELEASE build or cannot find the PE/COFF image base. |
| @retval others PE/COFF image base found. |
| |
| **/ |
| UINTN |
| EFIAPI |
| PeCoffSearchImageBase ( |
| IN UINTN Address |
| ); |
| |
| #endif |