]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BasePeCoffGetEntryPointLib/PeCoffGetEntryPoint.c
1. PostCodeLib.
[mirror_edk2.git] / MdePkg / Library / BasePeCoffGetEntryPointLib / PeCoffGetEntryPoint.c
index d5ff7db009a5e198c1ebec392066c65d723f99dd..b740bd6e7c4a007448d65ec192e9ac01354953f4 100644 (file)
 \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