/** @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.
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