On May 13, 2013, at 2:02 AM, Jeffrey Chou <[email protected]> wrote:

> Hi Daryl,
>  
> Thanks for your advice. Currently I just have the workaround that my UEFI 
> driver invoking a application by LoadImage or ShellExecute, of cause the 
> application should be built with StdLib.
> But I encountered some problems when using LoadImage and ShellExecute:
>  
> Case 1:
> For ShellExecute, I have an absolute file path of application for parameter 
> in ShellExecute. I always get EFI_SUCCESS from Status, but it seems that the 
> StdLibApp.efi is never executed.
> My UEFI Driver--ShellExecute-->StdLibApp
> e.g.
> ShellExecute (ImageHandle, L"folder1\folder2\StdLibApp.efi", FALSE, NULL, 
> &Status);
>  

Why would you expect a call ShellExecute from a driver to work? ShellExecute is 
a wrapper that calls a protocol produced by the shell. So by definition if the 
shell is not present it will not work. Your driver can't assume that the shell 
is present. 

https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/ShellPkg/Library/UefiShellLib/UefiShellLib.c

> Case 2:
> For LoadImage, also have the absolute file path for LoadImage function.
> My UEFI Driver--LoadImage/StartImage-->StdLibApp
> e.g.
> gBS->LoadImage(FALSE, ImageHandle, FilePath, NULL, 0, &Handle);
> gBS->StartImage(Handle, NULL, NULL );
> But I got an error EFI_STATUS from StartImage.

If the return value is not EFI_INVALID_PARAMETER or EFI_SECURITY_VIOLATION then 
EFI_STATUS is coming from the image. 

> I tried to change the StdLibApp to a PURE EFI Application, it works.
> Case 3:
> Base on the result from case 2, an idea as below.
> My UEFI Driver--LoadImage/StartImage-->PureEFIApp--ShellExecute-->StdLibApp
>  
> Unfortunately, also failed in case 3. I got the situation when calling 
> ShellExeute which is same as case 1.
>  
> Maybe my method and idea are a bit tortuous, but above are solutions I can 
> think of so far.
> Now I am back to case 2 and studying any solution can load a StdLibApp in an 
> UEFI Driver.
>  

Maybe you didn't understand the implication of Daryl's answer. A Shell 
Application, requires the actual Shell to be present. A driver can't depend on 
the shell. So non of this stuff you are trying is going to work. 

You need to port your driver to not use C lib APIs that are not available and 
use edk2 library functions that are available, or you need create a version of 
the C lib that implements the functions you need that does not depend on the 
shell. 

Thanks,

Andrew Fish

> Thanks
>  
> Jeffrey
> 2013/5/11 Mcdaniel, Daryl <[email protected]>
> Jeffrey,
> 
>  
> 
> The current version of StdLib is designed to only work as a Shell 
> Application.  Many of the services that StdLib relies upon are not available 
> until the BDS phase, or later.  As such, it is strongly recommended that 
> StdLib not be used in drivers.  It is my desire to provide a “standalone” 
> version of StdLib in the future, but it is not currently scheduled.
> 
>  
> 
> Daryl McDaniel 
>   
> “In the pun, two strings of thought are tangled into one acoustic knot.”
> -- Arthur Koestler 
> 
> 
>  
> 
> From: Jeffrey Chou [mailto:[email protected]] 
> Sent: Tuesday, May 07, 2013 3:20 AM
> To: edk2-devel
> Subject: [edk2] Using StdLib in UEFI_DRIVER Type
> 
>  
> 
> Hi all,
> 
>  
> 
> I am trying to use StbLib in an uefi driver module, and it seems the StbLib 
> is only supported on UEFI_APPLICATION. So I have an idea that my uefi driver 
> invoking an uefi application built with StdLib thru ShellExecute or 
> LoadImage. But I am facing a problem that I don't know how to pass auguments 
> to the application (in loadimage) and get the return value from the 
> application. Any suggestions?
> 
>  
> 
> Thanks
> 
> Jeffrey
> 
> 
> ------------------------------------------------------------------------------
> Learn Graph Databases - Download FREE O'Reilly Book
> "Graph Databases" is the definitive new guide to graph databases and
> their applications. This 200-page book is written by three acclaimed
> leaders in the field. The early access version is available now.
> Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
> 
> 
> ------------------------------------------------------------------------------
> Learn Graph Databases - Download FREE O'Reilly Book
> "Graph Databases" is the definitive new guide to graph databases and 
> their applications. This 200-page book is written by three acclaimed 
> leaders in the field. The early access version is available now. 
> Download your free book today! 
> http://p.sf.net/sfu/neotech_d2d_may_______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/edk2-devel

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and 
their applications. This 200-page book is written by three acclaimed 
leaders in the field. The early access version is available now. 
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to