1 /** @file
2 
3   This file explorer protocol defines defines a set of interfaces for
4   how to do file explorer.
5 
6 Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
7 This program and the accompanying materials are licensed and made available under
8 the terms and conditions of the BSD License that accompanies this distribution.
9 The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php.
11 
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14 
15 **/
16 
17 #ifndef __FILE_EXPLORER_H__
18 #define __FILE_EXPLORER_H__
19 
20 #define EFI_FILE_EXPLORER_PROTOCOL_GUID  \
21   { 0x2C03C536, 0x4594, 0x4515, { 0x9E, 0x7A, 0xD3, 0xD2, 0x04, 0xFE, 0x13, 0x63 } }
22 
23 //
24 // Forward reference for pure ANSI compatability
25 //
26 typedef struct _EFI_FILE_EXPLORER_PROTOCOL  EFI_FILE_EXPLORER_PROTOCOL;
27 
28 /**
29   Prototype for the next process after user chosed one file.
30 
31   @param[in] FilePath     The device path of the find file.
32 
33   @retval    TRUE         Need exit file explorer after do the extra task.
34   @retval    FALSE        Not need to exit file explorer after do the extra task.
35 
36 **/
37 typedef
38 BOOLEAN
39 (EFIAPI *CHOOSE_HANDLER)(
40   IN EFI_DEVICE_PATH_PROTOCOL  *FilePath
41   );
42 
43 /**
44   Choose a file in the specified directory.
45 
46   If user input NULL for the RootDirectory, will choose file in the system.
47 
48   If user input *File != NULL, function will return the allocate device path
49   info for the choosed file, caller has to free the memory after use it.
50 
51   @param  RootDirectory    Pointer to the root directory.
52   @param  FileType         The file type need to choose.
53   @param  ChooseHandler    Function pointer to the extra task need to do
54                            after choose one file.
55   @param  File             Return the device path for the last time chosed file.
56 
57   @retval EFI_SUCESS       Choose the file success.
58   @retval Other errors     Choose the file failed.
59 **/
60 typedef
61 EFI_STATUS
62 (EFIAPI   *CHOOSE_FILE) (
63   IN  EFI_DEVICE_PATH_PROTOCOL  *RootDirectory,
64   IN  CHAR16                    *FileType,  OPTIONAL
65   IN  CHOOSE_HANDLER            ChooseHandler,  OPTIONAL
66   OUT EFI_DEVICE_PATH_PROTOCOL  **File  OPTIONAL
67   );
68 
69 struct _EFI_FILE_EXPLORER_PROTOCOL {
70   CHOOSE_FILE                          ChooseFile;
71 };
72 
73 extern EFI_GUID gEfiFileExplorerProtocolGuid;
74 
75 #endif
76