summaryrefslogtreecommitdiffstats
path: root/MdePkg/Library/BasePeCoffGetEntryPointLib/PeCoffGetEntryPoint.c
diff options
context:
space:
mode:
Diffstat (limited to 'MdePkg/Library/BasePeCoffGetEntryPointLib/PeCoffGetEntryPoint.c')
-rw-r--r--MdePkg/Library/BasePeCoffGetEntryPointLib/PeCoffGetEntryPoint.c31
1 files changed, 21 insertions, 10 deletions
diff --git a/MdePkg/Library/BasePeCoffGetEntryPointLib/PeCoffGetEntryPoint.c b/MdePkg/Library/BasePeCoffGetEntryPointLib/PeCoffGetEntryPoint.c
index d5ff7db009..b740bd6e7c 100644
--- a/MdePkg/Library/BasePeCoffGetEntryPointLib/PeCoffGetEntryPoint.c
+++ b/MdePkg/Library/BasePeCoffGetEntryPointLib/PeCoffGetEntryPoint.c
@@ -17,38 +17,49 @@
/**
- Loads a PE/COFF image into memory.
+ 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.
- @param Pe32Data Pointer to a PE/COFF Image
-
- @param EntryPoint Pointer to the entry point of the PE/COFF image
+ 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().
- @retval EFI_SUCCESS if the EntryPoint was returned
- @retval EFI_INVALID_PARAMETER if the EntryPoint could not be found from Pe32Data
+ @param Pe32Data Pointer to the PE/COFF image that is loaded in system memory.
+ @param EntryPoint 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,
- IN OUT VOID **EntryPoint
+ IN VOID *Pe32Data,
+ OUT VOID **EntryPoint
)
{
EFI_IMAGE_DOS_HEADER *DosHeader;
EFI_IMAGE_NT_HEADERS *PeHeader;
+ ASSERT (Pe32Data != NULL);
+ ASSERT (EntryPoint != NULL);
+
DosHeader = (EFI_IMAGE_DOS_HEADER *)Pe32Data;
+
if (DosHeader->e_magic == EFI_IMAGE_DOS_SIGNATURE) {
//
- // DOS image header is present, so read the PE header after the DOS image header
+ // DOS image header is present, so read the PE header after the DOS image header.
//
PeHeader = (EFI_IMAGE_NT_HEADERS *) ((UINTN) Pe32Data + (UINTN) ((DosHeader->e_lfanew) & 0x0ffff));
} else {
//
- // DOS image header is not present, so PE header is at the image base
+ // DOS image header is not present, so PE header is at the image base.
//
PeHeader = (EFI_IMAGE_NT_HEADERS *) Pe32Data;
}
+
*EntryPoint = (VOID *) ((UINTN) Pe32Data + (UINTN) (PeHeader->OptionalHeader.AddressOfEntryPoint & 0x0ffffffff));
return RETURN_SUCCESS;
}