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>
+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/PropertiesTableAttributesDxe.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..010274b8250c1adf9426965a1d19fb500fddd089
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..a4255e90b26c83a25047494c6bf45d5d70b4b1f5
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

Reply via email to