The file path is the final node in the device path, not the whole thing.  Does 
your filename have the full path or just the file path?  Where is FileName from?

-Jaben

> -----Original Message-----
> From: S.Vieira [mailto:jwvsan...@outlook.com]
> Sent: Friday, May 15, 2015 8:52 AM
> To: edk2-devel@lists.sourceforge.net
> Subject: [edk2] Get DevicePath of the File Driver and do Loader
> Importance: High
> 
> I need get the DevicePath of the File, then i pass the FileName (CHAR16) and
> i want get return as DevicePath to use with LoadImage...
> I can not to use Shell Protocol.
> 
> 
> VOID
> GetDevicePathFromText (IN CHAR16* FileName,IN EFI_HANDLE
> ImageHandle) {
>       EFI_GUID
>       DevicePathFromTextGUID =
> EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL_GUID;
>       EFI_HANDLE
>       *handle;
>       EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL
>       *DevicePathFromTextProtocol;
>       EFI_STATUS
>       Status;
>       UINTN
>       bufferSize;
>       int
>               index;
> 
>       EFI_DEVICE_PATH
>       *FilePath;
>       EFI_HANDLE
>       *LoadedDriverHandle;
> 
>       LoadedDriverHandle = NULL;
> 
>       Status = gBS->LocateHandleBuffer(ByProtocol,
> 
>       &DevicePathFromTextGUID,
>                                                                       NULL,
> 
>       &bufferSize,
> 
>       &handle
>                                                                       );
> 
>       if(!EFI_ERROR(Status))
>       {
>               Print(L"\nLocate: %r",Status);
>               for(index = 0 ;  index < bufferSize ; index++)
>               {
>                       Status = gBS->OpenProtocol( handle[index],
> 
>       &DevicePathFromTextGUID,
> 
>       (void **)&DevicePathFromTextProtocol,
> 
>       ImageHandle,
> 
>       NULL,
> 
>       EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL
> 
>       );
>                       if(EFI_ERROR(Status))
>                       {
>                               Print(L"\nERRO");
>                       }else{
>                               FilePath = DevicePathFromTextProtocol-
> >ConvertTextToDevicePath(FileName);
>                               Status =
> gBS->LoadImage(FALSE,ImageHandle,FilePath,NULL,0,LoadedDriverHandle);
>                               if(!EFI_ERROR(Status)){
>                                       Print(L"Loaded %r",Status);
> 
>                               }else
>                               {
>                                       Print(L"Loaded %r",Status);
>                               }
>                       }
> 
>               }
> 
>       }else
>       {
>               Print(L"\nLocate: %r",Status);
>       }
> }
> 
> 
> ------------------------------------------------------------------------------
> One dashboard for servers and applications across Physical-Virtual-Cloud
> Widest out-of-the-box monitoring support with 50+ applications
> Performance metrics, stats and reports that give you Actionable Insights
> Deep dive visibility with transaction tracing using APM Insight.
> http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/edk2-devel

------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to