\r
\r
/**\r
- Loads a PE/COFF image into memory.\r
+ Retrieves and returns a pointer to the entry point to a PE/COFF image that has been loaded\r
+ into system memory with the PE/COFF Loader Library functions.\r
\r
- @param Pe32Data Pointer to a PE/COFF Image\r
- \r
- @param EntryPoint Pointer to the entry point of the PE/COFF image\r
+ Retrieves the entry point to the PE/COFF image specified by Pe32Data and returns this entry\r
+ point in EntryPoint. If the entry point could not be retrieved from the PE/COFF image, then\r
+ return RETURN_INVALID_PARAMETER. Otherwise return RETURN_SUCCESS.\r
+ If Pe32Data is NULL, then ASSERT().\r
+ If EntryPoint is NULL, then ASSERT().\r
\r
- @retval EFI_SUCCESS if the EntryPoint was returned\r
- @retval EFI_INVALID_PARAMETER if the EntryPoint could not be found from Pe32Data\r
+ @param Pe32Data Pointer to the PE/COFF image that is loaded in system memory.\r
+ @param EntryPoint Pointer to entry point to the PE/COFF image to return.\r
+\r
+ @retval RETURN_SUCCESS EntryPoint was returned.\r
+ @retval RETURN_INVALID_PARAMETER The entry point could not be found in the PE/COFF image.\r
\r
**/\r
RETURN_STATUS\r
EFIAPI\r
PeCoffLoaderGetEntryPoint (\r
- IN VOID *Pe32Data,\r
- IN OUT VOID **EntryPoint\r
+ IN VOID *Pe32Data,\r
+ OUT VOID **EntryPoint\r
)\r
{\r
EFI_IMAGE_DOS_HEADER *DosHeader;\r
EFI_IMAGE_NT_HEADERS *PeHeader;\r
\r
+ ASSERT (Pe32Data != NULL);\r
+ ASSERT (EntryPoint != NULL);\r
+\r
DosHeader = (EFI_IMAGE_DOS_HEADER *)Pe32Data;\r
+\r
if (DosHeader->e_magic == EFI_IMAGE_DOS_SIGNATURE) {\r
//\r
- // DOS image header is present, so read the PE header after the DOS image header\r
+ // DOS image header is present, so read the PE header after the DOS image header.\r
//\r
PeHeader = (EFI_IMAGE_NT_HEADERS *) ((UINTN) Pe32Data + (UINTN) ((DosHeader->e_lfanew) & 0x0ffff));\r
} else {\r
//\r
- // DOS image header is not present, so PE header is at the image base\r
+ // DOS image header is not present, so PE header is at the image base.\r
//\r
PeHeader = (EFI_IMAGE_NT_HEADERS *) Pe32Data;\r
}\r
+\r
*EntryPoint = (VOID *) ((UINTN) Pe32Data + (UINTN) (PeHeader->OptionalHeader.AddressOfEntryPoint & 0x0ffffffff));\r
return RETURN_SUCCESS;\r
}\r