> On Jun 5, 2017, at 4:42 AM, Amit kumar <akami...@hotmail.com> wrote:
> 
> 
> Hi,
> 
> I have created a uefi application and i want to directly launch from the Pen 
> Drive, just like uefi shell.
> I made a EFI/BOOT directory in USB and copied my application in this director 
> and name it BOOTX64.efi it seems to works in some PCs,
> But there are some PCs where it doesn't work even in boot menu i can see no 
> entry.
> Can somebody help me ?
> 

Amit,

Is your test case edk2 Shell at EFI\BOOT\BOOTX64.efi vs. your App on the same 
USB Key. If not try that. Some of the edk2 libraries don't like to run on older 
systems, so it would be good to make sure that is not the issue. 

You can write an UEFI App without any edk2 libraries by using this as a 
template:
https://github.com/tianocore/edk2/tree/master/MdeModulePkg/Application/HelloWorld

In HelloWorld.c replace the code with. 

#include <Uefi.h>

EFI_STATUS
EFIAPI
_ModuleEntryPoint (
  IN EFI_HANDLE        ImageHandle,
  IN EFI_SYSTEM_TABLE  *SystemTable
  )
{
  return SystemTable->ConOut->OutputString  (SystemTable->ConOut, L"Hello 
World\r\n");
}

In HelloWorld.inf comment out all the library classes listed under 
[LibraryClasses]

If the issue is specific to your App, and you know the App entry point C code 
is not getting called then you need to look at the library constructor. This 
code is auto generated by the build system in the Build results output as 
AutoGen.c. You can look at the ProcessLibraryConstructorList() and that will 
show you the code that is going be running before your entry point gets called. 

You could also try a release build of your App as that would remove the ASSERT 
macros in ProcessLibraryConstructorList() from the equation. 

Thanks,

Andrew Fish

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to