Home | History | Annotate | Download | only in Library
      1 /** @file
      2   Provides a service to retrieve the PE/COFF entry point from a PE/COFF image.
      3 
      4 Copyright (c) 2006 - 2010, 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 #endif
    105