git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10888 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			1006 lines
		
	
	
		
			41 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			1006 lines
		
	
	
		
			41 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  EFI Shell protocol as defined in the UEFI Shell 2.0 specification including errata.
 | 
						|
 | 
						|
  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
 | 
						|
  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.
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef __EFI_SHELL_PROTOCOL__
 | 
						|
#define __EFI_SHELL_PROTOCOL__
 | 
						|
 | 
						|
#include <ShellBase.h>
 | 
						|
#include <Guid/FileInfo.h>
 | 
						|
 | 
						|
#define EFI_SHELL_PROTOCOL_GUID \
 | 
						|
  { \
 | 
						|
  0x6302d008, 0x7f9b, 0x4f30, { 0x87, 0xac, 0x60, 0xc9, 0xfe, 0xf5, 0xda, 0x4e } \
 | 
						|
  }
 | 
						|
 | 
						|
// replaced EFI_LIST_ENTRY with LIST_ENTRY for simplicity.
 | 
						|
// they are identical outside of the name.
 | 
						|
typedef struct {
 | 
						|
  LIST_ENTRY        Link;       ///< Linked list members.
 | 
						|
  EFI_STATUS        Status;     ///< Status of opening the file.  Valid only if Handle != NULL.
 | 
						|
  CONST CHAR16      *FullName;  ///< Fully qualified filename.
 | 
						|
  CONST CHAR16      *FileName;  ///< name of this file.
 | 
						|
  SHELL_FILE_HANDLE Handle;     ///< Handle for interacting with the opened file or NULL if closed.
 | 
						|
  EFI_FILE_INFO     *Info;      ///< Pointer to the FileInfo struct for this file or NULL.
 | 
						|
} EFI_SHELL_FILE_INFO;
 | 
						|
 | 
						|
/**
 | 
						|
  Returns whether any script files are currently being processed.
 | 
						|
 | 
						|
  @retval TRUE                 There is at least one script file active.
 | 
						|
  @retval FALSE                No script files are active now.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
BOOLEAN
 | 
						|
(EFIAPI *EFI_SHELL_BATCH_IS_ACTIVE) (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Closes the file handle.
 | 
						|
 | 
						|
  This function closes a specified file handle. All 'dirty' cached file data is
 | 
						|
  flushed to the device, and the file is closed. In all cases, the handle is
 | 
						|
  closed.
 | 
						|
 | 
						|
  @param[in] FileHandle         The file handle to be closed.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The file closed sucessfully.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_CLOSE_FILE)(
 | 
						|
  IN SHELL_FILE_HANDLE FileHandle
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Creates a file or directory by name.
 | 
						|
 | 
						|
  This function creates an empty new file or directory with the specified attributes and
 | 
						|
  returns the new file's handle. If the file already exists and is read-only, then
 | 
						|
  EFI_INVALID_PARAMETER will be returned.
 | 
						|
 | 
						|
  If the file already existed, it is truncated and its attributes updated. If the file is
 | 
						|
  created successfully, the FileHandle is the file's handle, else, the FileHandle is NULL.
 | 
						|
 | 
						|
  If the file name begins with >v, then the file handle which is returned refers to the
 | 
						|
  shell environment variable with the specified name. If the shell environment variable
 | 
						|
  already exists and is non-volatile then EFI_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  @param[in] FileName           Pointer to NULL-terminated file path.
 | 
						|
  @param[in] FileAttribs        The new file's attrbiutes.  The different attributes are
 | 
						|
                                described in EFI_FILE_PROTOCOL.Open().
 | 
						|
  @param[out] FileHandle        On return, points to the created file handle or directory's handle.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The file was opened.  FileHandle points to the new file's handle.
 | 
						|
  @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.
 | 
						|
  @retval EFI_UNSUPPORTED       The file path could not be opened.
 | 
						|
  @retval EFI_NOT_FOUND         The specified file could not be found on the device, or could not
 | 
						|
                                file the file system on the device.
 | 
						|
  @retval EFI_NO_MEDIA          The device has no medium.
 | 
						|
  @retval EFI_MEDIA_CHANGED     The device has a different medium in it or the medium is no
 | 
						|
                                longer supported.
 | 
						|
  @retval EFI_DEVICE_ERROR      The device reported an error or can't get the file path according
 | 
						|
                                the DirName.
 | 
						|
  @retval EFI_VOLUME_CORRUPTED  The file system structures are corrupted.
 | 
						|
  @retval EFI_WRITE_PROTECTED   An attempt was made to create a file, or open a file for write
 | 
						|
                                when the media is write-protected.
 | 
						|
  @retval EFI_ACCESS_DENIED     The service denied access to the file.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES  Not enough resources were available to open the file.
 | 
						|
  @retval EFI_VOLUME_FULL       The volume is full.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_CREATE_FILE)(
 | 
						|
  IN CONST CHAR16               *FileName,
 | 
						|
  IN UINT64                     FileAttribs,
 | 
						|
  OUT SHELL_FILE_HANDLE         *FileHandle
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Deletes the file specified by the file handle.
 | 
						|
 | 
						|
  This function closes and deletes a file. In all cases, the file handle is closed. If the file
 | 
						|
  cannot be deleted, the warning code EFI_WARN_DELETE_FAILURE is returned, but the
 | 
						|
  handle is still closed.
 | 
						|
 | 
						|
  @param[in] FileHandle           The file handle to delete.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The file was closed and deleted and the handle was closed.
 | 
						|
  @retval EFI_WARN_DELETE_FAILURE The handle was closed but the file was not deleted.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_DELETE_FILE)(
 | 
						|
  IN SHELL_FILE_HANDLE FileHandle
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Deletes the file specified by the file name.
 | 
						|
 | 
						|
  This function deletes a file.
 | 
						|
 | 
						|
  @param[in] FileName             Points to the NULL-terminated file name.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The file was deleted.
 | 
						|
  @retval EFI_WARN_DELETE_FAILURE The handle was closed but the file was not deleted.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_DELETE_FILE_BY_NAME)(
 | 
						|
  IN CONST CHAR16 *FileName
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Disables the page break output mode.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
VOID
 | 
						|
(EFIAPI *EFI_SHELL_DISABLE_PAGE_BREAK) (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Enables the page break output mode.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
VOID
 | 
						|
(EFIAPI *EFI_SHELL_ENABLE_PAGE_BREAK) (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Execute the command line.
 | 
						|
 | 
						|
  This function creates a nested instance of the shell and executes the specified
 | 
						|
  command (CommandLine) with the specified environment (Environment). Upon return,
 | 
						|
  the status code returned by the specified command is placed in StatusCode.
 | 
						|
 | 
						|
  If Environment is NULL, then the current environment is used and all changes made
 | 
						|
  by the commands executed will be reflected in the current environment. If the
 | 
						|
  Environment is non-NULL, then the changes made will be discarded.
 | 
						|
 | 
						|
  The CommandLine is executed from the current working directory on the current
 | 
						|
  device.
 | 
						|
 | 
						|
  @param[in] ParentImageHandle  A handle of the image that is executing the specified
 | 
						|
                                command line.
 | 
						|
  @param[in] CommandLine        Points to the NULL-terminated UCS-2 encoded string
 | 
						|
                                containing the command line. If NULL then the command-
 | 
						|
                                line will be empty.
 | 
						|
  @param[in] Environment        Points to a NULL-terminated array of environment
 | 
						|
                                variables with the format 'x=y', where x is the
 | 
						|
                                environment variable name and y is the value. If this
 | 
						|
                                is NULL, then the current shell environment is used.
 | 
						|
  @param[out] ErrorCode         Points to the status code returned by the command.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The command executed successfully. The  status code
 | 
						|
                                returned by the command is pointed to by StatusCode.
 | 
						|
  @retval EFI_INVALID_PARAMETER The parameters are invalid.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES  Out of resources.
 | 
						|
  @retval EFI_UNSUPPORTED       Nested shell invocations are not allowed.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_EXECUTE) (
 | 
						|
  IN EFI_HANDLE                 *ParentImageHandle,
 | 
						|
  IN CHAR16                     *CommandLine OPTIONAL,
 | 
						|
  IN CHAR16                     **Environment OPTIONAL,
 | 
						|
  OUT EFI_STATUS                *StatusCode OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Find files that match a specified pattern.
 | 
						|
 | 
						|
  This function searches for all files and directories that match the specified
 | 
						|
  FilePattern. The FilePattern can contain wild-card characters. The resulting file
 | 
						|
  information is placed in the file list FileList.
 | 
						|
 | 
						|
  The files in the file list are not opened. The OpenMode field is set to 0 and the FileInfo
 | 
						|
  field is set to NULL.
 | 
						|
 | 
						|
  @param[in] FilePattern        Points to a NULL-terminated shell file path, including wildcards.
 | 
						|
  @param[out] FileList          On return, points to the start of a file list containing the names
 | 
						|
                                of all matching files or else points to NULL if no matching files
 | 
						|
                                were found.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           Files found.
 | 
						|
  @retval EFI_NOT_FOUND         No files found.
 | 
						|
  @retval EFI_NO_MEDIA          The device has no media.
 | 
						|
  @retval EFI_DEVICE_ERROR      The device reported an error.
 | 
						|
  @retval EFI_VOLUME_CORRUPTED  The file system structures are corrupted.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_FIND_FILES)(
 | 
						|
  IN CONST CHAR16               *FilePattern,
 | 
						|
  OUT EFI_SHELL_FILE_INFO       **FileList
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Find all files in a specified directory.
 | 
						|
 | 
						|
  @param[in] FileDirHandle      Handle of the directory to search.
 | 
						|
  @param[out] FileList          On return, points to the list of files in the directory
 | 
						|
                                or NULL if there are no files in the directory.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           File information was returned successfully.
 | 
						|
  @retval EFI_VOLUME_CORRUPTED  The file system structures have been corrupted.
 | 
						|
  @retval EFI_DEVICE_ERROR      The device reported an error.
 | 
						|
  @retval EFI_NO_MEDIA          The device media is not present.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_FIND_FILES_IN_DIR)(
 | 
						|
IN SHELL_FILE_HANDLE            FileDirHandle,
 | 
						|
OUT EFI_SHELL_FILE_INFO         **FileList
 | 
						|
);
 | 
						|
 | 
						|
/**
 | 
						|
  Flushes data back to a device.
 | 
						|
 | 
						|
  This function flushes all modified data associated with a file to a device.
 | 
						|
 | 
						|
  @param[in] FileHandle         The handle of the file to flush.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The data was flushed.
 | 
						|
  @retval EFI_NO_MEDIA          The device has no medium.
 | 
						|
  @retval EFI_DEVICE_ERROR      The device reported an error.
 | 
						|
  @retval EFI_VOLUME_CORRUPTED  The file system structures are corrupted.
 | 
						|
  @retval EFI_WRITE_PROTECTED   The file or medium is write-protected.
 | 
						|
  @retval EFI_ACCESS_DENIED     The file was opened read-only.
 | 
						|
  @retval EFI_VOLUME_FULL       The volume is full.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_FLUSH_FILE)(
 | 
						|
  IN SHELL_FILE_HANDLE FileHandle
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Frees the file list.
 | 
						|
 | 
						|
  This function cleans up the file list and any related data structures. It has no
 | 
						|
  impact on the files themselves.
 | 
						|
 | 
						|
  @param[in] FileList           The file list to free. Type EFI_SHELL_FILE_INFO is
 | 
						|
                                defined in OpenFileList().
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           Free the file list successfully.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_FREE_FILE_LIST) (
 | 
						|
  IN EFI_SHELL_FILE_INFO **FileList
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Returns the current directory on the specified device.
 | 
						|
 | 
						|
  If FileSystemMapping is NULL, it returns the current working directory. If the
 | 
						|
  FileSystemMapping is not NULL, it returns the current directory associated with the
 | 
						|
  FileSystemMapping. In both cases, the returned name includes the file system
 | 
						|
  mapping (i.e. fs0:\current-dir).
 | 
						|
 | 
						|
  @param[in] FileSystemMapping  A pointer to the file system mapping. If NULL,
 | 
						|
                                then the current working directory is returned.
 | 
						|
 | 
						|
  @retval !=NULL                The current directory.
 | 
						|
  @retval NULL                  Current directory does not exist.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
CONST CHAR16 *
 | 
						|
(EFIAPI *EFI_SHELL_GET_CUR_DIR) (
 | 
						|
  IN CONST CHAR16 *FileSystemMapping OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
typedef UINT32 EFI_SHELL_DEVICE_NAME_FLAGS;
 | 
						|
#define EFI_DEVICE_NAME_USE_COMPONENT_NAME  0x00000001
 | 
						|
#define EFI_DEVICE_NAME_USE_DEVICE_PATH     0x00000002
 | 
						|
 | 
						|
/**
 | 
						|
  Gets the name of the device specified by the device handle.
 | 
						|
 | 
						|
  This function gets the user-readable name of the device specified by the device
 | 
						|
  handle. If no user-readable name could be generated, then *BestDeviceName will be
 | 
						|
  NULL and EFI_NOT_FOUND will be returned.
 | 
						|
 | 
						|
  If EFI_DEVICE_NAME_USE_COMPONENT_NAME is set, then the function will return the
 | 
						|
  device's name using the EFI_COMPONENT_NAME2_PROTOCOL, if present on
 | 
						|
  DeviceHandle.
 | 
						|
 | 
						|
  If EFI_DEVICE_NAME_USE_DEVICE_PATH is set, then the function will return the
 | 
						|
  device's name using the EFI_DEVICE_PATH_PROTOCOL, if present on DeviceHandle.
 | 
						|
  If both EFI_DEVICE_NAME_USE_COMPONENT_NAME and
 | 
						|
  EFI_DEVICE_NAME_USE_DEVICE_PATH are set, then
 | 
						|
  EFI_DEVICE_NAME_USE_COMPONENT_NAME will have higher priority.
 | 
						|
 | 
						|
  @param[in] DeviceHandle       The handle of the device.
 | 
						|
  @param[in] Flags              Determines the possible sources of component names.
 | 
						|
  @param[in] Language           A pointer to the language specified for the device
 | 
						|
                                name, in the same format as described in the UEFI
 | 
						|
                                specification, Appendix M.
 | 
						|
  @param[out] BestDeviceName    On return, points to the callee-allocated NULL-
 | 
						|
                                terminated name of the device. If no device name
 | 
						|
                                could be found, points to NULL. The name must be
 | 
						|
                                freed by the caller...
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           Get the name successfully.
 | 
						|
  @retval EFI_NOT_FOUND         Fail to get the device name.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_GET_DEVICE_NAME) (
 | 
						|
  IN EFI_HANDLE                   DeviceHandle,
 | 
						|
  IN EFI_SHELL_DEVICE_NAME_FLAGS  Flags,
 | 
						|
  IN CHAR8                        *Language,
 | 
						|
  OUT CHAR16                      **BestDeviceName
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Gets the device path from the mapping.
 | 
						|
 | 
						|
  This function gets the device path associated with a mapping.
 | 
						|
 | 
						|
  @param[in] Mapping                A pointer to the mapping
 | 
						|
 | 
						|
  @retval !=NULL                Pointer to the device path that corresponds to the
 | 
						|
                                device mapping. The returned pointer does not need
 | 
						|
                                to be freed.
 | 
						|
  @retval NULL                  There is no device path associated with the
 | 
						|
                                specified mapping.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
CONST EFI_DEVICE_PATH_PROTOCOL *
 | 
						|
(EFIAPI *EFI_SHELL_GET_DEVICE_PATH_FROM_MAP) (
 | 
						|
  IN CONST CHAR16 *Mapping
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Converts a file system style name to a device path.
 | 
						|
 | 
						|
  This function converts a file system style name to a device path, by replacing any
 | 
						|
  mapping references to the associated device path.
 | 
						|
 | 
						|
  @param[in] Path               The pointer to the path.
 | 
						|
 | 
						|
  @return                       The pointer of the file path. The file path is callee
 | 
						|
                                allocated and should be freed by the caller.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_DEVICE_PATH_PROTOCOL *
 | 
						|
(EFIAPI *EFI_SHELL_GET_DEVICE_PATH_FROM_FILE_PATH) (
 | 
						|
  IN CONST CHAR16 *Path
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Gets either a single or list of environment variables.
 | 
						|
 | 
						|
  If name is not NULL then this function returns the current value of the specified
 | 
						|
  environment variable.
 | 
						|
 | 
						|
  If Name is NULL than a list of all environment variable names is returned.  Each a
 | 
						|
  NULL terminated string with a double NULL terminating the list.
 | 
						|
 | 
						|
  @param[in] Name               A pointer to the environment variable name.  If
 | 
						|
                                Name is NULL, then the function will return all
 | 
						|
                                of the defined shell environment variables.  In
 | 
						|
                                the case where multiple environment variables are
 | 
						|
                                being returned, each variable will be terminated by
 | 
						|
                                a NULL, and the list will be terminated by a double
 | 
						|
                                NULL.
 | 
						|
 | 
						|
  @return                       A pointer to the returned string.
 | 
						|
                                The returned pointer does not need to be freed by the caller.
 | 
						|
 | 
						|
  @retval NULL                  The environment variable doesn't exist or there are
 | 
						|
                                no environment variables.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
CONST CHAR16 *
 | 
						|
(EFIAPI *EFI_SHELL_GET_ENV) (
 | 
						|
  IN CONST CHAR16 *Name OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Gets the file information from an open file handle.
 | 
						|
 | 
						|
  This function allocates a buffer to store the file's information. It's the caller's
 | 
						|
  responsibility to free the buffer.
 | 
						|
 | 
						|
  @param[in] FileHandle         A File Handle.
 | 
						|
 | 
						|
  @retval NULL                  Cannot get the file info.
 | 
						|
  @return                       A pointer to a buffer with file information.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_FILE_INFO *
 | 
						|
(EFIAPI *EFI_SHELL_GET_FILE_INFO)(
 | 
						|
  IN SHELL_FILE_HANDLE FileHandle
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Converts a device path to a file system-style path.
 | 
						|
 | 
						|
  This function converts a device path to a file system path by replacing part, or all, of
 | 
						|
  the device path with the file-system mapping. If there are more than one application
 | 
						|
  file system mappings, the one that most closely matches Path will be used.
 | 
						|
 | 
						|
  @param[in] Path               The pointer to the device path.
 | 
						|
 | 
						|
  @return                       The pointer of the NULL-terminated file path. The path
 | 
						|
                                is callee-allocated and should be freed by the caller.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
CHAR16 *
 | 
						|
(EFIAPI *EFI_SHELL_GET_FILE_PATH_FROM_DEVICE_PATH) (
 | 
						|
  IN CONST EFI_DEVICE_PATH_PROTOCOL *Path
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Gets a file's current position.
 | 
						|
 | 
						|
  This function returns the current file position for the file handle. For directories, the
 | 
						|
  current file position has no meaning outside of the file system driver and as such, the
 | 
						|
  operation is not supported.
 | 
						|
 | 
						|
  @param[in] FileHandle         The file handle on which to get the current position.
 | 
						|
  @param[out] Position          Byte position from the start of the file.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           Data was accessed.
 | 
						|
  @retval EFI_UNSUPPORTED       The request is not valid on open directories.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_GET_FILE_POSITION)(
 | 
						|
  IN SHELL_FILE_HANDLE FileHandle,
 | 
						|
  OUT UINT64 *Position
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Gets the size of a file.
 | 
						|
 | 
						|
  This function returns the size of the file specified by FileHandle.
 | 
						|
 | 
						|
  @param[in] FileHandle         The handle of the file.
 | 
						|
  @param[out] Size              The size of this file.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           Get the file's size.
 | 
						|
  @retval EFI_DEVICE_ERROR      Can't access the file.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_GET_FILE_SIZE)(
 | 
						|
  IN SHELL_FILE_HANDLE FileHandle,
 | 
						|
  OUT UINT64 *Size
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Return help information about a specific command.
 | 
						|
 | 
						|
  This function returns the help information for the specified command. The help text
 | 
						|
  can be internal to the shell or can be from a UEFI Shell manual page.
 | 
						|
 | 
						|
  If Sections is specified, then each section name listed will be compared in a casesensitive
 | 
						|
  manner, to the section names described in Appendix B. If the section exists,
 | 
						|
  it will be appended to the returned help text. If the section does not exist, no
 | 
						|
  information will be returned. If Sections is NULL, then all help text information
 | 
						|
  available will be returned.
 | 
						|
 | 
						|
  @param[in] Command            Points to the NULL-terminated UEFI Shell command name.
 | 
						|
  @param[in] Sections           Points to the NULL-terminated comma-delimited
 | 
						|
                                section names to return. If NULL, then all
 | 
						|
                                sections will be returned.
 | 
						|
  @param[out] HelpText          On return, points to a callee-allocated buffer
 | 
						|
                                containing all specified help text.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The help text was returned.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES  The necessary buffer could not be allocated to hold the
 | 
						|
                                returned help text.
 | 
						|
  @retval EFI_INVALID_PARAMETER HelpText is NULL.
 | 
						|
  @retval EFI_NOT_FOUND         There is no help text available for Command.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_GET_HELP_TEXT) (
 | 
						|
  IN CONST CHAR16 *Command,
 | 
						|
  IN CONST CHAR16 *Sections OPTIONAL,
 | 
						|
  OUT CHAR16 **HelpText
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Gets the mapping(s) that most closely matches the device path.
 | 
						|
 | 
						|
  This function gets the mapping which corresponds to the device path *DevicePath. If
 | 
						|
  there is no exact match, then the mapping which most closely matches *DevicePath
 | 
						|
  is returned, and *DevicePath is updated to point to the remaining portion of the
 | 
						|
  device path. If there is an exact match, the mapping is returned and *DevicePath
 | 
						|
  points to the end-of-device-path node.
 | 
						|
 | 
						|
  If there are multiple map names they will be semi-colon seperated in the
 | 
						|
  NULL-terminated string.
 | 
						|
 | 
						|
  @param[in,out] DevicePath     On entry, points to a device path pointer. On
 | 
						|
                                exit, updates the pointer to point to the
 | 
						|
                                portion of the device path after the mapping.
 | 
						|
 | 
						|
  @retval NULL                  No mapping was found.
 | 
						|
  @retval !=NULL                Pointer to NULL-terminated mapping. The buffer
 | 
						|
                                is callee allocated and should be freed by the caller.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
CONST CHAR16 *
 | 
						|
(EFIAPI *EFI_SHELL_GET_MAP_FROM_DEVICE_PATH) (
 | 
						|
  IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Gets the enable status of the page break output mode.
 | 
						|
 | 
						|
  User can use this function to determine current page break mode.
 | 
						|
 | 
						|
  @retval TRUE                  The page break output mode is enabled.
 | 
						|
  @retval FALSE                 The page break output mode is disabled.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
BOOLEAN
 | 
						|
(EFIAPI *EFI_SHELL_GET_PAGE_BREAK) (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Judges whether the active shell is the root shell.
 | 
						|
 | 
						|
  This function makes the user to know that whether the active Shell is the root shell.
 | 
						|
 | 
						|
  @retval TRUE                  The active Shell is the root Shell.
 | 
						|
  @retval FALSE                 The active Shell is NOT the root Shell.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
BOOLEAN
 | 
						|
(EFIAPI *EFI_SHELL_IS_ROOT_SHELL) (
 | 
						|
VOID
 | 
						|
);
 | 
						|
 | 
						|
/**
 | 
						|
  Opens a file or a directory by file name.
 | 
						|
 | 
						|
  This function opens the specified file in the specified OpenMode and returns a file
 | 
						|
  handle.
 | 
						|
  If the file name begins with '>v', then the file handle which is returned refers to the
 | 
						|
  shell environment variable with the specified name. If the shell environment variable
 | 
						|
  exists, is non-volatile and the OpenMode indicates EFI_FILE_MODE_WRITE, then
 | 
						|
  EFI_INVALID_PARAMETER is returned.
 | 
						|
 | 
						|
  If the file name is '>i', then the file handle which is returned refers to the standard
 | 
						|
  input. If the OpenMode indicates EFI_FILE_MODE_WRITE, then EFI_INVALID_PARAMETER
 | 
						|
  is returned.
 | 
						|
 | 
						|
  If the file name is '>o', then the file handle which is returned refers to the standard
 | 
						|
  output. If the OpenMode indicates EFI_FILE_MODE_READ, then EFI_INVALID_PARAMETER
 | 
						|
  is returned.
 | 
						|
 | 
						|
  If the file name is '>e', then the file handle which is returned refers to the standard
 | 
						|
  error. If the OpenMode indicates EFI_FILE_MODE_READ, then EFI_INVALID_PARAMETER
 | 
						|
  is returned.
 | 
						|
 | 
						|
  If the file name is 'NUL', then the file handle that is returned refers to the standard NUL
 | 
						|
  file. If the OpenMode indicates EFI_FILE_MODE_READ, then EFI_INVALID_PARAMETER is
 | 
						|
  returned.
 | 
						|
 | 
						|
  If return EFI_SUCCESS, the FileHandle is the opened file's handle, else, the
 | 
						|
  FileHandle is NULL.
 | 
						|
 | 
						|
  @param[in] FileName           Points to the NULL-terminated UCS-2 encoded file name.
 | 
						|
  @param[out] FileHandle        On return, points to the file handle.
 | 
						|
  @param[in] OpenMode           File open mode. Either EFI_FILE_MODE_READ or
 | 
						|
                                EFI_FILE_MODE_WRITE from section 12.4 of the UEFI
 | 
						|
                                Specification.
 | 
						|
  @retval EFI_SUCCESS           The file was opened. FileHandle has the opened file's handle.
 | 
						|
  @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value. FileHandle is NULL.
 | 
						|
  @retval EFI_UNSUPPORTED       Could not open the file path. FileHandle is NULL.
 | 
						|
  @retval EFI_NOT_FOUND         The specified file could not be found on the device or the file
 | 
						|
                                system could not be found on the device. FileHandle is NULL.
 | 
						|
  @retval EFI_NO_MEDIA          The device has no medium. FileHandle is NULL.
 | 
						|
  @retval EFI_MEDIA_CHANGED     The device has a different medium in it or the medium is no
 | 
						|
                                longer supported. FileHandle is NULL.
 | 
						|
  @retval EFI_DEVICE_ERROR      The device reported an error or can't get the file path according
 | 
						|
                                the FileName. FileHandle is NULL.
 | 
						|
  @retval EFI_VOLUME_CORRUPTED  The file system structures are corrupted. FileHandle is NULL.
 | 
						|
  @retval EFI_WRITE_PROTECTED   An attempt was made to create a file, or open a file for write
 | 
						|
                                when the media is write-protected. FileHandle is NULL.
 | 
						|
  @retval EFI_ACCESS_DENIED     The service denied access to the file. FileHandle is NULL.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES  Not enough resources were available to open the file. FileHandle
 | 
						|
                                is NULL.
 | 
						|
  @retval EFI_VOLUME_FULL       The volume is full. FileHandle is NULL.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_OPEN_FILE_BY_NAME) (
 | 
						|
  IN CONST CHAR16 *FileName,
 | 
						|
  OUT SHELL_FILE_HANDLE *FileHandle,
 | 
						|
  IN UINT64 OpenMode
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Opens the files that match the path specified.
 | 
						|
 | 
						|
  This function opens all of the files specified by Path. Wildcards are processed
 | 
						|
  according to the rules specified in UEFI Shell 2.0 spec section 3.7.1. Each
 | 
						|
  matching file has an EFI_SHELL_FILE_INFO structure created in a linked list.
 | 
						|
 | 
						|
  @param[in] Path               A pointer to the path string.
 | 
						|
  @param[in] OpenMode           Specifies the mode used to open each file, EFI_FILE_MODE_READ or
 | 
						|
                                EFI_FILE_MODE_WRITE.
 | 
						|
  @param[in,out] FileList       Points to the start of a list of files opened.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           Create the file list successfully.
 | 
						|
  @return                       Can't create the file list.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_OPEN_FILE_LIST) (
 | 
						|
  IN CHAR16 *Path,
 | 
						|
  IN UINT64 OpenMode,
 | 
						|
  IN OUT EFI_SHELL_FILE_INFO **FileList
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Opens the root directory of a device.
 | 
						|
 | 
						|
  This function opens the root directory of a device and returns a file handle to it.
 | 
						|
 | 
						|
  @param[in] DevicePath         Points to the device path corresponding to the device where the
 | 
						|
                                EFI_SIMPLE_FILE_SYSTEM_PROTOCOL is installed.
 | 
						|
  @param[out] FileHandle        On exit, points to the file handle corresponding to the root directory on the
 | 
						|
                                device.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           Root opened successfully.
 | 
						|
  @retval EFI_NOT_FOUND         EFI_SIMPLE_FILE_SYSTEM could not be found or the root directory
 | 
						|
                                could not be opened.
 | 
						|
  @retval EFI_VOLUME_CORRUPTED  The data structures in the volume were corrupted.
 | 
						|
  @retval EFI_DEVICE_ERROR      The device had an error.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_OPEN_ROOT)(
 | 
						|
  IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
 | 
						|
  OUT SHELL_FILE_HANDLE *FileHandle
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Opens the root directory of a device on a handle.
 | 
						|
 | 
						|
  This function opens the root directory of a device and returns a file handle to it.
 | 
						|
 | 
						|
  @param[in] DeviceHandle       The handle of the device that contains the volume.
 | 
						|
  @param[out] FileHandle        On exit, points to the file handle corresponding to the root directory on the
 | 
						|
                                device.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           Root opened successfully.
 | 
						|
  @retval EFI_NOT_FOUND         EFI_SIMPLE_FILE_SYSTEM could not be found or the root directory
 | 
						|
                                could not be opened.
 | 
						|
  @retval EFI_VOLUME_CORRUPTED  The data structures in the volume were corrupted.
 | 
						|
  @retval EFI_DEVICE_ERROR      The device had an error.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_OPEN_ROOT_BY_HANDLE)(
 | 
						|
  IN EFI_HANDLE DeviceHandle,
 | 
						|
  OUT SHELL_FILE_HANDLE *FileHandle
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Reads data from the file.
 | 
						|
 | 
						|
  If FileHandle is not a directory, the function reads the requested number of bytes
 | 
						|
  from the file at the file's current position and returns them in Buffer. If the read goes
 | 
						|
  beyond the end of the file, the read length is truncated to the end of the file. The file's
 | 
						|
  current position is increased by the number of bytes returned.
 | 
						|
  If FileHandle is a directory, then an error is returned.
 | 
						|
 | 
						|
  @param[in] FileHandle         The opened file handle for read.
 | 
						|
  @param[in] ReadSize           On input, the size of Buffer, in bytes. On output, the amount of data read.
 | 
						|
  @param[in,out] Buffer         The buffer in which data is read.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           Data was read.
 | 
						|
  @retval EFI_NO_MEDIA          The device has no media.
 | 
						|
  @retval EFI_DEVICE_ERROR      The device reported an error.
 | 
						|
  @retval EFI_VOLUME_CORRUPTED  The file system structures are corrupted.
 | 
						|
  @retval EFI_BUFFER_TO_SMALL   Buffer is too small. ReadSize contains required size.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_READ_FILE) (
 | 
						|
  IN SHELL_FILE_HANDLE FileHandle,
 | 
						|
  IN OUT UINTN *ReadSize,
 | 
						|
  IN OUT VOID *Buffer
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Deletes the duplicate file names files in the given file list.
 | 
						|
 | 
						|
  @param[in] FileList           A pointer to the first entry in the file list.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           Always success.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_REMOVE_DUP_IN_FILE_LIST) (
 | 
						|
  IN EFI_SHELL_FILE_INFO **FileList
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Changes a shell command alias.
 | 
						|
 | 
						|
  This function creates an alias for a shell command.
 | 
						|
 | 
						|
  @param[in] Command            Points to the NULL-terminated shell command or existing alias.
 | 
						|
  @param[in] Alias              Points to the NULL-terminated alias for the shell command. If this is NULL, and
 | 
						|
                                Command refers to an alias, that alias will be deleted.
 | 
						|
  @param[in] Replace            If TRUE and the alias already exists, then the existing alias will be replaced. If
 | 
						|
                                FALSE and the alias already exists, then the existing alias is unchanged and
 | 
						|
                                EFI_ACCESS_DENIED is returned.
 | 
						|
  @param[in] Volatile           if TRUE the Alias being set will be stored in a volatile fashion.  if FALSE the
 | 
						|
                                Alias being set will be stored in a non-volatile fashion.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           Alias created or deleted successfully.
 | 
						|
  @retval EFI_ACCESS_DENIED     The alias is a built-in alias or already existed and Replace was set to
 | 
						|
                                FALSE.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_SET_ALIAS)(
 | 
						|
  IN CONST CHAR16 *Command,
 | 
						|
  IN CONST CHAR16 *Alias,
 | 
						|
  IN BOOLEAN Replace,
 | 
						|
  IN BOOLEAN Volatile
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This function returns the command associated with a alias or a list of all
 | 
						|
  alias'.
 | 
						|
 | 
						|
  @param[in] Alias              Points to the NULL-terminated shell alias.
 | 
						|
                                If this parameter is NULL, then all
 | 
						|
                                aliases will be returned in ReturnedData.
 | 
						|
  @param[out] Volatile          Upon return of a single command if TRUE indicates
 | 
						|
                                this is stored in a volatile fashion.  FALSE otherwise.
 | 
						|
  @return                      	If Alias is not NULL, it will return a pointer to
 | 
						|
                                the NULL-terminated command for that alias.
 | 
						|
                                If Alias is NULL, ReturnedData points to a ';'
 | 
						|
                                delimited list of alias (e.g.
 | 
						|
                                ReturnedData = "dir;del;copy;mfp") that is NULL-terminated.
 | 
						|
  @retval NULL                  An error ocurred.
 | 
						|
  @retval NULL                  Alias was not a valid Alias.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
CONST CHAR16 *
 | 
						|
(EFIAPI *EFI_SHELL_GET_ALIAS)(
 | 
						|
  IN  CONST CHAR16 *Alias,
 | 
						|
  OUT BOOLEAN      *Volatile OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Changes the current directory on the specified device.
 | 
						|
 | 
						|
  If the FileSystem is NULL, and the directory Dir does not contain a file system's
 | 
						|
  mapped name, this function changes the current working directory. If FileSystem is
 | 
						|
  NULL and the directory Dir contains a mapped name, then the current file system and
 | 
						|
  the current directory on that file system are changed.
 | 
						|
 | 
						|
  If FileSystem is not NULL, and Dir is NULL, then this changes the current working file
 | 
						|
  system.
 | 
						|
 | 
						|
  If FileSystem is not NULL and Dir is not NULL, then this function changes the current
 | 
						|
  directory on the specified file system.
 | 
						|
 | 
						|
  If the current working directory or the current working file system is changed then the
 | 
						|
  %cwd% environment variable will be updated.
 | 
						|
 | 
						|
  @param[in] FileSystem         A pointer to the file system's mapped name. If NULL, then the current working
 | 
						|
                                directory is changed.
 | 
						|
  @param[in] Dir                Points to the NULL-terminated directory on the device specified by FileSystem.
 | 
						|
 | 
						|
  @retval NULL                  Current directory does not exist.
 | 
						|
  @return                       The current directory.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_SET_CUR_DIR) (
 | 
						|
  IN CONST CHAR16 *FileSystem OPTIONAL,
 | 
						|
  IN CONST CHAR16 *Dir
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Sets the environment variable.
 | 
						|
 | 
						|
  This function changes the current value of the specified environment variable. If the
 | 
						|
  environment variable exists and the Value is an empty string, then the environment
 | 
						|
  variable is deleted. If the environment variable exists and the Value is not an empty
 | 
						|
  string, then the value of the environment variable is changed. If the environment
 | 
						|
  variable does not exist and the Value is an empty string, there is no action. If the
 | 
						|
  environment variable does not exist and the Value is a non-empty string, then the
 | 
						|
  environment variable is created and assigned the specified value.
 | 
						|
 | 
						|
  For a description of volatile and non-volatile environment variables, see UEFI Shell
 | 
						|
  2.0 specification section 3.6.1.
 | 
						|
 | 
						|
  @param[in] Name               Points to the NULL-terminated environment variable name.
 | 
						|
  @param[in] Value              Points to the NULL-terminated environment variable value. If the value is an
 | 
						|
                                empty string then the environment variable is deleted.
 | 
						|
  @param[in] Volatile           Indicates whether the variable is non-volatile (FALSE) or volatile (TRUE).
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The environment variable was successfully updated.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_SET_ENV) (
 | 
						|
  IN CONST CHAR16 *Name,
 | 
						|
  IN CONST CHAR16 *Value,
 | 
						|
  IN BOOLEAN Volatile
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Sets the file information to an opened file handle.
 | 
						|
 | 
						|
  This function changes file information.  All file information in the EFI_FILE_INFO
 | 
						|
  struct will be updated to the passed in data.
 | 
						|
 | 
						|
  @param[in] FileHandle         A file handle.
 | 
						|
  @param[in] FileInfo           Points to new file information.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The information was set.
 | 
						|
  @retval EFI_NO_MEDIA          The device has no medium.
 | 
						|
  @retval EFI_DEVICE_ERROR      The device reported an error.
 | 
						|
  @retval EFI_VOLUME_CORRUPTED  The file system structures are corrupted.
 | 
						|
  @retval EFI_WRITE_PROTECTED   The file or medium is write-protected.
 | 
						|
  @retval EFI_ACCESS_DENIED     The file was opened read-only.
 | 
						|
  @retval EFI_VOLUME_FULL       The volume is full.
 | 
						|
  @retval EFI_BAD_BUFFER_SIZE   BufferSize is smaller than the size of EFI_FILE_INFO.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_SET_FILE_INFO)(
 | 
						|
  IN SHELL_FILE_HANDLE FileHandle,
 | 
						|
  IN CONST EFI_FILE_INFO *FileInfo
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Sets a file's current position.
 | 
						|
 | 
						|
  This function sets the current file position for the handle to the position supplied. With
 | 
						|
  the exception of seeking to position 0xFFFFFFFFFFFFFFFF, only absolute positioning is
 | 
						|
  supported, and seeking past the end of the file is allowed (a subsequent write would
 | 
						|
  grow the file). Seeking to position 0xFFFFFFFFFFFFFFFF causes the current position
 | 
						|
  to be set to the end of the file.
 | 
						|
 | 
						|
  @param[in] FileHandle         The file handle on which requested position will be set.
 | 
						|
  @param[in] Position           Byte position from the start of the file.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           Data was written.
 | 
						|
  @retval EFI_UNSUPPORTED       The seek request for nonzero is not valid on open directories.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_SET_FILE_POSITION)(
 | 
						|
  IN SHELL_FILE_HANDLE FileHandle,
 | 
						|
  IN UINT64 Position
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This function creates a mapping for a device path.
 | 
						|
 | 
						|
  @param[in] DevicePath         Points to the device path. If this is NULL and Mapping points to a valid mapping,
 | 
						|
                                then the mapping will be deleted.
 | 
						|
  @param[in] Mapping            Points to the NULL-terminated mapping for the device path.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           Mapping created or deleted successfully.
 | 
						|
  @retval EFI_NO_MAPPING        There is no handle that corresponds exactly to DevicePath. See the
 | 
						|
                                boot service function LocateDevicePath().
 | 
						|
  @retval EFI_ACCESS_DENIED     The mapping is a built-in alias.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_SET_MAP)(
 | 
						|
  IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
 | 
						|
  IN CONST CHAR16 *Mapping
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Writes data to the file.
 | 
						|
 | 
						|
  This function writes the specified number of bytes to the file at the current file position.
 | 
						|
  The current file position is advanced the actual number of bytes written, which is
 | 
						|
  returned in BufferSize. Partial writes only occur when there has been a data error
 | 
						|
  during the write attempt (such as "volume space full"). The file automatically grows to
 | 
						|
  hold the data, if required.
 | 
						|
 | 
						|
  Direct writes to opened directories are not supported.
 | 
						|
 | 
						|
  @param[in] FileHandle             The opened file handle for writing.
 | 
						|
  @param[in,out] BufferSize         On input, size of Buffer.
 | 
						|
  @param[in] Buffer                 The buffer in which data to write.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS               Data was written.
 | 
						|
  @retval EFI_UNSUPPORTED           Writes to open directory are not supported.
 | 
						|
  @retval EFI_NO_MEDIA              The device has no media.
 | 
						|
  @retval EFI_DEVICE_ERROR          The device reported an error.
 | 
						|
  @retval EFI_VOLUME_CORRUPTED      The file system structures are corrupted.
 | 
						|
  @retval EFI_WRITE_PROTECTED       The device is write-protected.
 | 
						|
  @retval EFI_ACCESS_DENIED         The file was open for read only.
 | 
						|
  @retval EFI_VOLUME_FULL           The volume is full.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SHELL_WRITE_FILE)(
 | 
						|
  IN SHELL_FILE_HANDLE          FileHandle,
 | 
						|
  IN OUT UINTN                  *BufferSize,
 | 
						|
  IN VOID                       *Buffer
 | 
						|
  );
 | 
						|
 | 
						|
typedef struct _EFI_SHELL_PROTOCOL {
 | 
						|
  EFI_SHELL_EXECUTE                         Execute;
 | 
						|
  EFI_SHELL_GET_ENV                         GetEnv;
 | 
						|
  EFI_SHELL_SET_ENV                         SetEnv;
 | 
						|
  EFI_SHELL_GET_ALIAS                       GetAlias;
 | 
						|
  EFI_SHELL_SET_ALIAS                       SetAlias;
 | 
						|
  EFI_SHELL_GET_HELP_TEXT                   GetHelpText;
 | 
						|
  EFI_SHELL_GET_DEVICE_PATH_FROM_MAP        GetDevicePathFromMap;
 | 
						|
  EFI_SHELL_GET_MAP_FROM_DEVICE_PATH        GetMapFromDevicePath;
 | 
						|
  EFI_SHELL_GET_DEVICE_PATH_FROM_FILE_PATH  GetDevicePathFromFilePath;
 | 
						|
  EFI_SHELL_GET_FILE_PATH_FROM_DEVICE_PATH  GetFilePathFromDevicePath;
 | 
						|
  EFI_SHELL_SET_MAP                         SetMap;
 | 
						|
  EFI_SHELL_GET_CUR_DIR                     GetCurDir;
 | 
						|
  EFI_SHELL_SET_CUR_DIR                     SetCurDir;
 | 
						|
  EFI_SHELL_OPEN_FILE_LIST                  OpenFileList;
 | 
						|
  EFI_SHELL_FREE_FILE_LIST                  FreeFileList;
 | 
						|
  EFI_SHELL_REMOVE_DUP_IN_FILE_LIST         RemoveDupInFileList;
 | 
						|
  EFI_SHELL_BATCH_IS_ACTIVE                 BatchIsActive;
 | 
						|
  EFI_SHELL_IS_ROOT_SHELL                   IsRootShell;
 | 
						|
  EFI_SHELL_ENABLE_PAGE_BREAK               EnablePageBreak;
 | 
						|
  EFI_SHELL_DISABLE_PAGE_BREAK              DisablePageBreak;
 | 
						|
  EFI_SHELL_GET_PAGE_BREAK                  GetPageBreak;
 | 
						|
  EFI_SHELL_GET_DEVICE_NAME                 GetDeviceName;
 | 
						|
  EFI_SHELL_GET_FILE_INFO                   GetFileInfo;
 | 
						|
  EFI_SHELL_SET_FILE_INFO                   SetFileInfo;
 | 
						|
  EFI_SHELL_OPEN_FILE_BY_NAME               OpenFileByName;
 | 
						|
  EFI_SHELL_CLOSE_FILE                      CloseFile;
 | 
						|
  EFI_SHELL_CREATE_FILE                     CreateFile;
 | 
						|
  EFI_SHELL_READ_FILE                       ReadFile;
 | 
						|
  EFI_SHELL_WRITE_FILE                      WriteFile;
 | 
						|
  EFI_SHELL_DELETE_FILE                     DeleteFile;
 | 
						|
  EFI_SHELL_DELETE_FILE_BY_NAME             DeleteFileByName;
 | 
						|
  EFI_SHELL_GET_FILE_POSITION               GetFilePosition;
 | 
						|
  EFI_SHELL_SET_FILE_POSITION               SetFilePosition;
 | 
						|
  EFI_SHELL_FLUSH_FILE                      FlushFile;
 | 
						|
  EFI_SHELL_FIND_FILES                      FindFiles;
 | 
						|
  EFI_SHELL_FIND_FILES_IN_DIR               FindFilesInDir;
 | 
						|
  EFI_SHELL_GET_FILE_SIZE                   GetFileSize;
 | 
						|
  EFI_SHELL_OPEN_ROOT                       OpenRoot;
 | 
						|
  EFI_SHELL_OPEN_ROOT_BY_HANDLE             OpenRootByHandle;
 | 
						|
  EFI_EVENT                                 ExecutionBreak;
 | 
						|
  UINT32                                    MajorVersion;
 | 
						|
  UINT32                                    MinorVersion;
 | 
						|
} EFI_SHELL_PROTOCOL;
 | 
						|
 | 
						|
extern EFI_GUID gEfiShellProtocolGuid;
 | 
						|
 | 
						|
enum ShellVersion {
 | 
						|
  SHELL_MAJOR_VERSION = 2,
 | 
						|
  SHELL_MINOR_VERSION = 0
 | 
						|
};
 | 
						|
 | 
						|
#endif
 |