Reviewed-by: Samer El-Haj-Mahmoud <el...@hpe.com>


-----Original Message-----
From: Dong, Eric [mailto:eric.d...@intel.com] 
Sent: Wednesday, November 11, 2015 12:30 AM
To: af...@apple.com
Cc: edk2-devel@lists.01.org; Sheng, Cecil (HPS SW) <cecil.sh...@hpe.com>; 
El-Haj-Mahmoud, Samer <samer.el-haj-mahm...@hpe.com>; Gao, Liming 
<liming....@intel.com>
Subject: RE: [edk2] [Patch V3 2/2] MdeModulePkg FileExplorerDxe: Create file 
explorer Protocol.

Yes, will update when check in the code.

-----Original Message-----
From: af...@apple.com [mailto:af...@apple.com] 
Sent: Wednesday, November 11, 2015 1:41 PM
To: Dong, Eric
Cc: edk2-devel@lists.01.org; cecil.sh...@hpe.com; samer.el-haj-mahm...@hpe.com; 
Gao, Liming
Subject: Re: [edk2] [Patch V3 2/2] MdeModulePkg FileExplorerDxe: Create file 
explorer Protocol.


> On Nov 10, 2015, at 9:34 PM, Eric Dong <eric.d...@intel.com> wrote:
> 
> This driver produces file explorer protocol layered on top of the 
> FileExplorerLib.
> 
> Cc: Liming Gao <liming....@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Eric Dong <eric.d...@intel.com>
> ---
> MdeModulePkg/Include/Protocol/FileExplorer.h       |  75 +++++++++++++++++++++
> .../Library/FileExplorerLib/FileExplorerLib.inf    |   3 +-
> MdeModulePkg/MdeModulePkg.dec                      |   3 +
> MdeModulePkg/MdeModulePkg.dsc                      |   2 +
> .../Universal/FileExplorerDxe/FileExplorerDxe.c    |  58 ++++++++++++++++
> .../Universal/FileExplorerDxe/FileExplorerDxe.inf  |  53 
> +++++++++++++++ .../Universal/FileExplorerDxe/FileExplorerDxe.uni  | Bin 0 -> 
> 2038 bytes
> .../FileExplorerDxe/FileExplorerDxeExtra.uni       | Bin 0 -> 1362 bytes
> 8 files changed, 193 insertions(+), 1 deletion(-) create mode 100644 
> MdeModulePkg/Include/Protocol/FileExplorer.h
> create mode 100644 
> MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.c
> create mode 100644 
> MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.inf
> create mode 100644 
> MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.uni
> create mode 100644 
> MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxeExtra.uni
> 
> diff --git a/MdeModulePkg/Include/Protocol/FileExplorer.h 
> b/MdeModulePkg/Include/Protocol/FileExplorer.h
> new file mode 100644
> index 0000000..7f6cbd9
> --- /dev/null
> +++ b/MdeModulePkg/Include/Protocol/FileExplorer.h
> @@ -0,0 +1,75 @@
> +/** @file
> +
> +  This file explorer protocol defines defines a set of interfaces for  
> + how to do file explorer.
> +
> +Copyright (c) 2006 - 2010, Intel Corporation. All rights 
> +reserved.<BR>

Should this be 2015?

Thanks,

Andrew Fish

> +This program and the accompanying materials are licensed and made 
> +available under the terms and conditions of the BSD License that accompanies 
> this distribution.
> +The full text of the license may be found at
> +http://opensource.org/licenses/bsd-license.php.                              
>               
> +
> +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,        
>              
> +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> +
> +**/
> +
> +#ifndef __FILE_EXPLORER_H__
> +#define __FILE_EXPLORER_H__
> +
> +#define EFI_FILE_EXPLORER_PROTOCOL_GUID  \
> +  { 0x2C03C536, 0x4594, 0x4515, { 0x9E, 0x7A, 0xD3, 0xD2, 0x04, 0xFE, 
> +0x13, 0x63 } }
> +
> +//
> +// Forward reference for pure ANSI compatability // typedef struct 
> +_EFI_FILE_EXPLORER_PROTOCOL  EFI_FILE_EXPLORER_PROTOCOL;
> +
> +/**
> +  Prototype for the next process after user chosed one file.
> +
> +  @param[in] FilePath     The device path of the find file.
> +
> +  @retval    TRUE         Need exit file explorer after do the extra task.
> +  @retval    FALSE        Not need to exit file explorer after do the extra 
> task.
> +
> +**/
> +typedef
> +BOOLEAN
> +(EFIAPI *CHOOSE_HANDLER)(
> +  IN EFI_DEVICE_PATH_PROTOCOL  *FilePath
> +  );
> +
> +/**
> +  Choose a file in the specified directory. 
> +
> +  If user input NULL for the RootDirectory, will choose file in the system.
> +
> +  If user input *File != NULL, function will return the allocate 
> + device path  info for the choosed file, caller has to free the memory after 
> use it.
> +
> +  @param  RootDirectory    Pointer to the root directory.
> +  @param  FileType         The file type need to choose.
> +  @param  ChooseHandler    Function pointer to the extra task need to do
> +                           after choose one file.
> +  @param  File             Return the device path for the last time chosed 
> file.
> +
> +  @retval EFI_SUCESS       Choose the file success.
> +  @retval Other errors     Choose the file failed.
> +**/
> +typedef
> +EFI_STATUS
> +(EFIAPI   *CHOOSE_FILE) (
> +  IN  EFI_DEVICE_PATH_PROTOCOL  *RootDirectory,
> +  IN  CHAR16                    *FileType,  OPTIONAL
> +  IN  CHOOSE_HANDLER            ChooseHandler,  OPTIONAL
> +  OUT EFI_DEVICE_PATH_PROTOCOL  **File  OPTIONAL
> +  );
> +
> +struct _EFI_FILE_EXPLORER_PROTOCOL {
> +  CHOOSE_FILE                          ChooseFile;
> +};
> +
> +extern EFI_GUID gEfiFileExplorerProtocolGuid;
> +
> +#endif
> diff --git a/MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf 
> b/MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
> index c52a220..a2be614 100644
> --- a/MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
> +++ b/MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
> @@ -44,11 +44,12 @@
>   BaseLib
>   MemoryAllocationLib
>   UefiBootServicesTableLib
>   BaseMemoryLib
>   DebugLib
> -
> +  HiiLib
> +
> [Guids]
>   gEfiFileSystemVolumeLabelInfoIdGuid           ## CONSUMES ## GUID (Indicate 
> the information type is volume)
>   gEfiIfrTianoGuid                              ## CONSUMES ## GUID (Extended 
> IFR Guid Opcode)
> 
> [Protocols]
> diff --git a/MdeModulePkg/MdeModulePkg.dec 
> b/MdeModulePkg/MdeModulePkg.dec index d45e49a..0f53608 100644
> --- a/MdeModulePkg/MdeModulePkg.dec
> +++ b/MdeModulePkg/MdeModulePkg.dec
> @@ -451,10 +451,13 @@
>   gEdkiiSmmLegacyBootProtocolGuid = { 0x85a8ab57, 0x644, 0x4110, { 
> 0x85, 0xf, 0x98, 0x13, 0x22, 0x4, 0x70, 0x70 } }
> 
>   ## Include/Protocol/SmmReadyToBoot.h
>   gEdkiiSmmReadyToBootProtocolGuid = { 0x6e057ecf, 0xfa99, 0x4f39, { 
> 0x95, 0xbc, 0x59, 0xf9, 0x92, 0x1d, 0x17, 0xe4 } }
> 
> +  ## Include/Protocol/FileExplorer.h
> +  gEfiFileExplorerProtocolGuid = { 0x2C03C536, 0x4594, 0x4515, { 
> + 0x9E, 0x7A, 0xD3, 0xD2, 0x04, 0xFE, 0x13, 0x63 } }
> +
> #
> # [Error.gEfiMdeModulePkgTokenSpaceGuid]
> #   0x80000001 | Invalid value provided.
> #   0x80000002 | Reserved bits must be set to zero.
> #   0x80000003 | Incorrect progress code provided.
> diff --git a/MdeModulePkg/MdeModulePkg.dsc 
> b/MdeModulePkg/MdeModulePkg.dsc index 62f596d..8613173 100644
> --- a/MdeModulePkg/MdeModulePkg.dsc
> +++ b/MdeModulePkg/MdeModulePkg.dsc
> @@ -96,10 +96,11 @@
>   
> CpuExceptionHandlerLib|MdeModulePkg/Library/CpuExceptionHandlerLibNull/CpuExceptionHandlerLibNull.inf
>   
> PlatformBootManagerLib|MdeModulePkg/Library/PlatformBootManagerLibNull/PlatformBootManagerLibNull.inf
>   
> TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
>   
> AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLibNull.inf
>   VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf
> +  
> + FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib
> + .inf
> 
> [LibraryClasses.EBC.PEIM]
>   IoLib|MdePkg/Library/PeiIoLibCpuIo/PeiIoLibCpuIo.inf
> 
> [LibraryClasses.common.PEI_CORE]
> @@ -367,10 +368,11 @@
> 
>   MdeModulePkg/Universal/FvSimpleFileSystemDxe/FvSimpleFileSystemDxe.inf
>   MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf
> 
>   
> MdeModulePkg/Universal/PropertiesTableAttributesDxe/PropertiesTableAtt
> ributesDxe.inf
> +  MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.inf
> 
> [Components.IA32, Components.X64, Components.IPF]  
>   MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
>   MdeModulePkg/Universal/DebugSupportDxe/DebugSupportDxe.inf
>   MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
> diff --git a/MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.c 
> b/MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.c
> new file mode 100644
> index 0000000..93a6f98
> --- /dev/null
> +++ b/MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.c
> @@ -0,0 +1,58 @@
> +/** @file
> +  This driver produces file explorer protocol layered on top of the 
> FileExplorerLib from the MdeModulePkg.
> +
> +Copyright (c) 2015, Intel Corporation. All rights reserved.<BR> This 
> +program and the accompanying materials are licensed and made 
> +available under the terms and conditions of the BSD License which 
> +accompanies this distribution.  The full text of the license may be 
> +found at http://opensource.org/licenses/bsd-license.php
> +
> +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 
> +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> +
> +**/
> +
> +#include <PiDxe.h>
> +
> +#include <Protocol/FileExplorer.h>
> +#include <Library/FileExplorerLib.h>
> +#include <Library/UefiBootServicesTableLib.h>
> +#include <Library/DebugLib.h>
> +#include <Library/UefiDriverEntryPoint.h>
> +
> +EFI_HANDLE  mFileExplorerThunkHandle = NULL;
> +
> +CONST EFI_FILE_EXPLORER_PROTOCOL mFileExplorerProtocol = {
> +  ChooseFile
> +};
> +
> +/**
> +  The user Entry Point for File explorer module.
> +
> +  This is the entry point for Print DXE Driver. It installs the file 
> explorer Protocol.
> +
> +  @param[in] ImageHandle    The firmware allocated handle for the EFI image.
> +  @param[in] SystemTable    A pointer to the EFI System Table.
> +
> +  @retval EFI_SUCCESS       The entry point is executed successfully.
> +  @retval Others            Some error occurs when executing this entry 
> point.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +FileExplorerEntryPoint (
> +  IN EFI_HANDLE           ImageHandle,
> +  IN EFI_SYSTEM_TABLE     *SystemTable
> +  )
> +{
> +  EFI_STATUS  Status;
> +
> +  Status = gBS->InstallMultipleProtocolInterfaces (
> +                  &mFileExplorerThunkHandle,
> +                  &gEfiFileExplorerProtocolGuid, &mFileExplorerProtocol,
> +                  NULL
> +                  );
> +  ASSERT_EFI_ERROR (Status);
> +
> +  return Status;
> +}
> diff --git 
> a/MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.inf 
> b/MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.inf
> new file mode 100644
> index 0000000..81ccab9
> --- /dev/null
> +++ b/MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.inf
> @@ -0,0 +1,53 @@
> +## @file
> +#  File explorer DXE driver that produces File explorer Protocol.
> +#
> +#  This driver produces File explorerprotocol layered on top of the 
> +FileExplorerLib #  from the MdeModulePkg.
> +#
> +#  Copyright (c) 2009 - 2015, Intel Corporation. All rights 
> +reserved.<BR> #  This program and the accompanying materials #  are 
> +licensed and made available under the terms and conditions of the BSD 
> +License #  which accompanies this distribution.  The full text of the 
> +license may be found at #  
> +http://opensource.org/licenses/bsd-license.php
> +#
> +#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" 
> +BASIS, #  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS 
> OR IMPLIED.
> +#
> +##
> +
> +[Defines]
> +  INF_VERSION                    = 0x00010005
> +  BASE_NAME                      = FileExplorerDxe
> +  MODULE_UNI_FILE                = FileExplorerDxe.uni
> +  FILE_GUID                      = 405DA936-3737-4C0C-8E3F-E6172A568592
> +  MODULE_TYPE                    = DXE_DRIVER
> +  VERSION_STRING                 = 1.0
> +  ENTRY_POINT                    = FileExplorerEntryPoint
> +
> +#
> +# The following information is for reference only and not required by the 
> build tools.
> +#
> +#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
> +#
> +
> +[Sources]
> +  FileExplorerDxe.c
> +
> +[Packages]
> +  MdeModulePkg/MdeModulePkg.dec
> +  MdePkg/MdePkg.dec
> +
> +[LibraryClasses]
> +  FileExplorerLib
> +  UefiBootServicesTableLib
> +  UefiDriverEntryPoint
> +  DebugLib
> +
> +[Protocols]
> +  gEfiFileExplorerProtocolGuid    ## PRODUCES
> +
> +[Depex]
> +  TRUE
> +
> +[UserExtensions.TianoCore."ExtraFiles"]
> +  FileExplorerDxeExtra.uni
> diff --git 
> a/MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.uni 
> b/MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.uni
> new file mode 100644
> index 
> 0000000000000000000000000000000000000000..010274b8250c1adf9426965a1d19
> fb500fddd089
> GIT binary patch
> literal 2038
> zcmb`IUvCmo5XI-&#P4uJU(~dqO?=Q8BiOAHZ6QEYeKJs5*htxi(ptW}`a84#fFf$r
> zY<BnFxwB`^oSD1#*Uy^OEO0;L3ii$}EVhZA+hco#RcnWtC0Jy4cExI9GdyOj9oQGF
> z!G_FYyUna~8(ZJz*sriBtlroeYu8xX?m1<3Kbs|t6V?-ut3}*0eh;+Rzg>-TAA1|q
> z)Vqunh}O4-Gd_o5ApVr6Jg$6p;j=Lw+clWLZa`Lj?nS{rprmrYTtYb_&bb|7l_FBP
> zZQpIQG3)ovW8rFzP(W%vL8Yg>_w6~?D@J?S?1jCwUB*pvn1efEEQA@k=&5SNjHbj2
> zR%cxvs#%Jy%BZH-+%vD^5YIQ(u#UYga@tgrRM(NmP_BJqNKN&Cl<UJ;wY`Li))vH^
> z5;b5EE5(Z$O^99MOG|w%ZPhtbXC~YnUtdd2S#G)2wSDR!RRijZMcSh|lQh<)cT$cb
> zX7Y>+eWXM}?aB-q)}_ybeO}>Ga{b}`dB*d8wlN%pC=PiK>pl0Z2k>03OEC4i_+NN`
> zs77La$8(+4sxqmX3%mx|_erLKIL()oRVU4<#cSW)>h)Az`OjSID*4Z-P;E{9Yb*n}
> z59zwq=v7e0+@&VvsAnJj57DNRTK0iwogJV~?eaYEcMofmUOOTG$hAJPW8M*VX_6w8
> zb!gJt5guJfZZT3%>sjF~T%lKZH+-(y?h?CG)`i;gh`~<r>NvAw>`hRG(emgWX5ucJ
> zV)pQrkD{hthxjV`SKgmk5p(UuD2tM25%H(YaZ2<iTD0jb#XQ*fAJBif=G>*J?wz84
> z(tXs0PshH2)B@uKw1`=q+|!jhYW3jrr)$S|j<9a%m67+4dSVYOF|9oC39#)it<z!o
> zJg5|z|6A7TnJ)RNpV~#8Hf8?zthE>OJ-d9m-9LBoGc)*JT|FTm=G<97dG#+EP@Dfb
> IV@fT51L+JyEdT%j
> 
> literal 0
> HcmV?d00001
> 
> diff --git 
> a/MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxeExtra.uni 
> b/MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxeExtra.uni
> new file mode 100644
> index 
> 0000000000000000000000000000000000000000..a4255e90b26c83a25047494c6bf4
> 5d5d70b4b1f5
> GIT binary patch
> literal 1362
> zcmZXUTW{Jx5QXQtQvZWRUfL=#y{Io$RTYZUT1_w_pr%iexrA5(j0{aee|(egtnGD3
> zg}ggEGkfOj*<m04wXJOd-y42`eYI=LY-w|QX)o|9c3OENySELo+zR4_^;pk|pW&HW
> zN+h$tcxL!6Y)3|BYg^csb&4hbH*(j+=5DNO)N>i%*xv13*bSM1y#oC;^Lu-1@9YEC
> ziC=xRW9+!XTw<$20Z)x7`!iQDB+`MQGQ_LI7Bih?%U9T~;~v^)>)O!1cm*1EBN%1w
> zJR9<JP*h_DN`1Z^8PX($^OTGgOcdK!S_F8+O7$|VC1?$PidVa(<P>Y|m`S%9U%O{j
> zg<EXhRcaGP?fb(HMGNejNm*;<Sl1|Grp(OiBPDX~zS-C14tuQ64!AU2@0=D>#{W;7
> z!9j@PQ0k>xTh==D1fEatB{1nK{?|mxI}+=AvYxX#RHjsOPu8T`pH~`))9#6~>ZBca
> z@yYdcj#a9w{K9D+a{huFZ9h|gi)RA&8C`c+Jp|>3uhyiVb)Fv<!D>JsCH9@MW9O`6
> zG!0Ny^9XNDr;V{9r}WtR%n|+up}B>a&W^~qaL5UkI$C3kS-3)NF?Zcst7FeCuwTT*
> zD{&RI?odh0`uJl|g^{@GLssH0pK6ZCQjV&YS*PS`=WphpM8sVG#HgxLo+7eKkJF&X
> zXfdF#RI_KH=h*0{x2Wy>@*Vlk(QBf&McQ3e>JC5|`V(A%oq#$9KO(0O%X6&2p&fC9
> r`VTC)^^{RPr#?6#U;I?9<=;D<=J3VS-Ca7gp6g`27zI1Dul^nZQ*P0^
> 
> literal 0
> HcmV?d00001
> 
> --
> 1.9.5.msysgit.1
> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel

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

Reply via email to