/* 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(). */
RETURN_STATUS EFIAPI PeCoffLoaderGetEntryPoint(IN VOID *Pe32Data, IN OUT VOID **EntryPoint)
/* 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(). */
RETURN_STATUS EFIAPI PeCoffLoaderGetEntryPoint(IN VOID *Pe32Data, IN OUT VOID **EntryPoint)
{
  EMU_THUNK_PPI       *ThunkPpi;
  EFI_STATUS          Status;
  EMU_THUNK_PROTOCOL  *Thunk;
  Status = PeiServicesLocatePpi (
             &gEmuThunkPpiGuid,
             0,
             NULL,
             (VOID **)&ThunkPpi
             );
  ASSERT_EFI_ERROR (Status);
  Thunk = (EMU_THUNK_PROTOCOL *)ThunkPpi->Thunk ();
  return Thunk->PeCoffGetEntryPoint (Pe32Data, EntryPoint);
}