/** @file | |
Member functions of EFI_SHELL_PROTOCOL and functions for creation, | |
manipulation, and initialization of EFI_SHELL_PROTOCOL. | |
(C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR> | |
Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef _SHELL_PROTOCOL_HEADER_ | |
#define _SHELL_PROTOCOL_HEADER_ | |
#include "Shell.h" | |
typedef struct { | |
LIST_ENTRY Link; | |
EFI_SHELL_PROTOCOL *Interface; | |
EFI_HANDLE Handle; | |
} SHELL_PROTOCOL_HANDLE_LIST; | |
// flags values... | |
#define SHELL_MAP_FLAGS_CONSIST BIT1 | |
/** | |
Function to create and install on the current handle. | |
Will overwrite any existing ShellProtocols in the system to be sure that | |
the current shell is in control. | |
This must be removed via calling CleanUpShellProtocol(). | |
@param[in, out] NewShell The pointer to the pointer to the structure | |
to install. | |
@retval EFI_SUCCESS The operation was successful. | |
@return An error from LocateHandle, CreateEvent, or other core function. | |
**/ | |
EFI_STATUS | |
CreatePopulateInstallShellProtocol ( | |
IN OUT EFI_SHELL_PROTOCOL **NewShell | |
); | |
/** | |
Opposite of CreatePopulateInstallShellProtocol. | |
Free all memory and restore the system to the state it was in before calling | |
CreatePopulateInstallShellProtocol. | |
@param[in, out] NewShell The pointer to the new shell protocol structure. | |
@retval EFI_SUCCESS The operation was successful. | |
**/ | |
EFI_STATUS | |
CleanUpShellProtocol ( | |
IN OUT EFI_SHELL_PROTOCOL *NewShell | |
); | |
/** | |
Cleanup the shell environment. | |
@param[in, out] NewShell The pointer to the new shell protocol structure. | |
@retval EFI_SUCCESS The operation was successful. | |
**/ | |
EFI_STATUS | |
CleanUpShellEnvironment ( | |
IN OUT EFI_SHELL_PROTOCOL *NewShell | |
); | |
/** | |
This function creates a mapping for a device path. | |
@param DevicePath Points to the device path. If this is NULL and Mapping points to a valid mapping, | |
then the mapping will be deleted. | |
@param Mapping Points to the NULL-terminated mapping for the device path. Must end with a ':' | |
@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. | |
@retval EFI_INVALID_PARAMETER Mapping was NULL | |
@retval EFI_INVALID_PARAMETER Mapping did not end with a ':' | |
@retval EFI_INVALID_PARAMETER DevicePath was not pointing at a device that had a SIMPLE_FILE_SYSTEM_PROTOCOL installed. | |
@retval EFI_NOT_FOUND There was no mapping found to delete | |
@retval EFI_OUT_OF_RESOURCES Memory allocation failed | |
**/ | |
EFI_STATUS | |
EFIAPI | |
EfiShellSetMap ( | |
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath OPTIONAL, | |
IN CONST CHAR16 *Mapping | |
); | |
/** | |
Gets the device path from the mapping. | |
This function gets the device path associated with a mapping. | |
@param 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. | |
**/ | |
CONST EFI_DEVICE_PATH_PROTOCOL * | |
EFIAPI | |
EfiShellGetDevicePathFromMap ( | |
IN CONST CHAR16 *Mapping | |
); | |
/** | |
Gets the mapping 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. | |
@param 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. | |
@return !=NULL Pointer to NULL-terminated mapping. The buffer | |
is callee allocated and should be freed by the caller. | |
**/ | |
CONST CHAR16 * | |
EFIAPI | |
EfiShellGetMapFromDevicePath ( | |
IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath | |
); | |
/** | |
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 Path The pointer to the device path | |
@retval NULL the device path could not be found. | |
@return all The pointer of the NULL-terminated file path. The path | |
is callee-allocated and should be freed by the caller. | |
**/ | |
CHAR16 * | |
EFIAPI | |
EfiShellGetFilePathFromDevicePath ( | |
IN CONST EFI_DEVICE_PATH_PROTOCOL *Path | |
); | |
/** | |
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 Path the pointer to the path | |
@return all The pointer of the file path. The file path is callee | |
allocated and should be freed by the caller. | |
**/ | |
EFI_DEVICE_PATH_PROTOCOL * | |
EFIAPI | |
EfiShellGetDevicePathFromFilePath ( | |
IN CONST CHAR16 *Path | |
); | |
/** | |
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 DeviceHandle The handle of the device. | |
@param Flags Determines the possible sources of component names. | |
Valid bits are: | |
EFI_DEVICE_NAME_USE_COMPONENT_NAME | |
EFI_DEVICE_NAME_USE_DEVICE_PATH | |
@param Language A pointer to the language specified for the device | |
name, in the same format as described in the UEFI | |
specification, Appendix M | |
@param 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. | |
@retval EFI_INVALID_PARAMETER Flags did not have a valid bit set. | |
@retval EFI_INVALID_PARAMETER BestDeviceName was NULL | |
@retval EFI_INVALID_PARAMETER DeviceHandle was NULL | |
**/ | |
EFI_STATUS | |
EFIAPI | |
EfiShellGetDeviceName ( | |
IN EFI_HANDLE DeviceHandle, | |
IN EFI_SHELL_DEVICE_NAME_FLAGS Flags, | |
IN CHAR8 *Language, | |
OUT CHAR16 **BestDeviceName | |
); | |
/** | |
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 DeviceHandle The handle of the device that contains the volume. | |
@param 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 | |
**/ | |
EFI_STATUS | |
EFIAPI | |
EfiShellOpenRootByHandle ( | |
IN EFI_HANDLE DeviceHandle, | |
OUT SHELL_FILE_HANDLE *FileHandle | |
); | |
/** | |
Opens the root directory of a device. | |
This function opens the root directory of a device and returns a file handle to it. | |
@param DevicePath Points to the device path corresponding to the device where the | |
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL is installed. | |
@param 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 | |
**/ | |
EFI_STATUS | |
EFIAPI | |
EfiShellOpenRoot ( | |
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath, | |
OUT SHELL_FILE_HANDLE *FileHandle | |
); | |
/** | |
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. | |
**/ | |
BOOLEAN | |
EFIAPI | |
EfiShellBatchIsActive ( | |
VOID | |
); | |
/** | |
Worker function to open a file based on a device path. this will open the root | |
of the volume and then traverse down to the file itself. | |
@param DevicePath2 Device Path of the file | |
@param FileHandle Pointer to the file upon a successful return | |
@param OpenMode mode to open file in. | |
@param Attributes the File Attributes to use when creating a new file | |
@retval EFI_SUCCESS the file is open and FileHandle is valid | |
@retval EFI_UNSUPPORTED the device path contained non-path elements | |
@retval other an error occurred. | |
**/ | |
EFI_STATUS | |
InternalOpenFileDevicePath ( | |
IN OUT EFI_DEVICE_PATH_PROTOCOL *DevicePath2, | |
OUT SHELL_FILE_HANDLE *FileHandle, | |
IN UINT64 OpenMode, | |
IN UINT64 Attributes OPTIONAL | |
); | |
/** | |
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 FileName Pointer to NULL-terminated file path | |
@param FileAttribs The new file's attributes. the different attributes are | |
described in EFI_FILE_PROTOCOL.Open(). | |
@param 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 could not open the file path | |
@retval EFI_NOT_FOUND the specified file could not be found on the devide, 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. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
EfiShellCreateFile ( | |
IN CONST CHAR16 *FileName, | |
IN UINT64 FileAttribs, | |
OUT SHELL_FILE_HANDLE *FileHandle | |
); | |
/** | |
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 FileName Points to the NULL-terminated UCS-2 encoded file name. | |
@param FileHandle On return, points to the file handle. | |
@param 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. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
EfiShellOpenFileByName ( | |
IN CONST CHAR16 *FileName, | |
OUT SHELL_FILE_HANDLE *FileHandle, | |
IN UINT64 OpenMode | |
); | |
/** | |
Deletes the file specified by the file name. | |
This function deletes a file. | |
@param FileName Points to the NULL-terminated file name. | |
@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. | |
@sa EfiShellCreateFile | |
@sa FileHandleDelete | |
**/ | |
EFI_STATUS | |
EFIAPI | |
EfiShellDeleteFileByName ( | |
IN CONST CHAR16 *FileName | |
); | |
/** | |
Disables the page break output mode. | |
**/ | |
VOID | |
EFIAPI | |
EfiShellDisablePageBreak ( | |
VOID | |
); | |
/** | |
Enables the page break output mode. | |
**/ | |
VOID | |
EFIAPI | |
EfiShellEnablePageBreak ( | |
VOID | |
); | |
/** | |
internal worker function to run a command via Device Path | |
@param ParentImageHandle A handle of the image that is executing the specified | |
command line. | |
@param DevicePath device path of the file to execute | |
@param CommandLine Points to the NULL-terminated UCS-2 encoded string | |
containing the command line. If NULL then the command- | |
line will be empty. | |
@param 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] StartImageStatus Returned status from gBS->StartImage. | |
@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. | |
**/ | |
EFI_STATUS | |
InternalShellExecuteDevicePath ( | |
IN CONST EFI_HANDLE *ParentImageHandle, | |
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, | |
IN CONST CHAR16 *CommandLine OPTIONAL, | |
IN CONST CHAR16 **Environment OPTIONAL, | |
OUT EFI_STATUS *StartImageStatus OPTIONAL | |
); | |
/** | |
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 ParentImageHandle A handle of the image that is executing the specified | |
command line. | |
@param CommandLine Points to the NULL-terminated UCS-2 encoded string | |
containing the command line. If NULL then the command- | |
line will be empty. | |
@param 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 StatusCode 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. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
EfiShellExecute ( | |
IN EFI_HANDLE *ParentImageHandle, | |
IN CHAR16 *CommandLine OPTIONAL, | |
IN CHAR16 **Environment OPTIONAL, | |
OUT EFI_STATUS *StatusCode OPTIONAL | |
); | |
/** | |
Utility cleanup function for EFI_SHELL_FILE_INFO objects. | |
1) frees all pointers (non-NULL) | |
2) Closes the SHELL_FILE_HANDLE | |
@param FileListNode pointer to the list node to free | |
**/ | |
VOID | |
FreeShellFileInfoNode ( | |
IN EFI_SHELL_FILE_INFO *FileListNode | |
); | |
/** | |
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 FileList The file list to free. Type EFI_SHELL_FILE_INFO is | |
defined in OpenFileList() | |
@retval EFI_SUCCESS Free the file list successfully. | |
@retval EFI_INVALID_PARAMETER FileList was NULL or *FileList was NULL; | |
**/ | |
EFI_STATUS | |
EFIAPI | |
EfiShellFreeFileList ( | |
IN EFI_SHELL_FILE_INFO **FileList | |
); | |
/** | |
Deletes the duplicate file names files in the given file list. | |
This function deletes the reduplicate files in the given file list. | |
@param FileList A pointer to the first entry in the file list. | |
@retval EFI_SUCCESS Always success. | |
@retval EFI_INVALID_PARAMETER FileList was NULL or *FileList was NULL; | |
**/ | |
EFI_STATUS | |
EFIAPI | |
EfiShellRemoveDupInFileList ( | |
IN EFI_SHELL_FILE_INFO **FileList | |
); | |
/** | |
Allocates and populates a EFI_SHELL_FILE_INFO structure. if any memory operation | |
failed it will return NULL. | |
@param[in] BasePath the Path to prepend onto filename for FullPath | |
@param[in] Status Status member initial value. | |
@param[in] FileName FileName member initial value. | |
@param[in] Handle Handle member initial value. | |
@param[in] Info Info struct to copy. | |
**/ | |
EFI_SHELL_FILE_INFO * | |
CreateAndPopulateShellFileInfo ( | |
IN CONST CHAR16 *BasePath, | |
IN CONST EFI_STATUS Status, | |
IN CONST CHAR16 *FileName, | |
IN CONST SHELL_FILE_HANDLE Handle, | |
IN CONST EFI_FILE_INFO *Info | |
); | |
/** | |
Find all files in a specified directory. | |
@param FileDirHandle Handle of the directory to search. | |
@param 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. | |
@retval EFI_INVALID_PARAMETER The FileDirHandle was not a directory. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
EfiShellFindFilesInDir ( | |
IN SHELL_FILE_HANDLE FileDirHandle, | |
OUT EFI_SHELL_FILE_INFO **FileList | |
); | |
/** | |
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. | |
Wildcards are processed | |
according to the rules specified in UEFI Shell 2.0 spec section 3.7.1. | |
The files in the file list are not opened. The OpenMode field is set to 0 and the FileInfo | |
field is set to NULL. | |
if *FileList is not NULL then it must be a pre-existing and properly initialized list. | |
@param FilePattern Points to a NULL-terminated shell file path, including wildcards. | |
@param 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. only on a EFI_SUCCESS return will; this be non-NULL. | |
@retval EFI_SUCCESS Files found. FileList is a valid list. | |
@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 | |
**/ | |
EFI_STATUS | |
EFIAPI | |
EfiShellFindFiles ( | |
IN CONST CHAR16 *FilePattern, | |
OUT EFI_SHELL_FILE_INFO **FileList | |
); | |
/** | |
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 Path A pointer to the path string. | |
@param OpenMode Specifies the mode used to open each file, EFI_FILE_MODE_READ or | |
EFI_FILE_MODE_WRITE. | |
@param FileList Points to the start of a list of files opened. | |
@retval EFI_SUCCESS Create the file list successfully. | |
@return Others Can't create the file list. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
EfiShellOpenFileList ( | |
IN CHAR16 *Path, | |
IN UINT64 OpenMode, | |
IN OUT EFI_SHELL_FILE_INFO **FileList | |
); | |
/** | |
Gets the environment variable. | |
This function returns the current value of the specified environment variable. | |
@param Name A pointer to the environment variable name | |
@retval !=NULL The environment variable's value. The returned | |
pointer does not need to be freed by the caller. | |
@retval NULL The environment variable doesn't exist. | |
**/ | |
CONST CHAR16 * | |
EFIAPI | |
EfiShellGetEnv ( | |
IN CONST CHAR16 *Name | |
); | |
/** | |
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 Name Points to the NULL-terminated environment variable name. | |
@param Value Points to the NULL-terminated environment variable value. If the value is an | |
empty string then the environment variable is deleted. | |
@param Volatile Indicates whether the variable is non-volatile (FALSE) or volatile (TRUE). | |
@retval EFI_SUCCESS The environment variable was successfully updated. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
EfiShellSetEnv ( | |
IN CONST CHAR16 *Name, | |
IN CONST CHAR16 *Value, | |
IN BOOLEAN Volatile | |
); | |
/** | |
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 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. | |
**/ | |
CONST CHAR16 * | |
EFIAPI | |
EfiShellGetCurDir ( | |
IN CONST CHAR16 *FileSystemMapping 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 FileSystem A pointer to the file system's mapped name. If NULL, then the current working | |
directory is changed. | |
@param Dir Points to the NULL-terminated directory on the device specified by FileSystem. | |
@retval EFI_SUCCESS The operation was successful | |
**/ | |
EFI_STATUS | |
EFIAPI | |
EfiShellSetCurDir ( | |
IN CONST CHAR16 *FileSystem OPTIONAL, | |
IN CONST CHAR16 *Dir | |
); | |
/** | |
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 Command Points to the NULL-terminated UEFI Shell command name. | |
@param Sections Points to the NULL-terminated comma-delimited | |
section names to return. If NULL, then all | |
sections will be returned. | |
@param 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. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
EfiShellGetHelpText ( | |
IN CONST CHAR16 *Command, | |
IN CONST CHAR16 *Sections OPTIONAL, | |
OUT CHAR16 **HelpText | |
); | |
/** | |
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 | |
**/ | |
BOOLEAN | |
EFIAPI | |
EfiShellGetPageBreak ( | |
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. | |
**/ | |
BOOLEAN | |
EFIAPI | |
EfiShellIsRootShell ( | |
VOID | |
); | |
/** | |
This function returns the command associated with a alias or a list of all | |
alias'. | |
@param[in] Command 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 occurred | |
@retval NULL Alias was not a valid Alias | |
**/ | |
CONST CHAR16 * | |
EFIAPI | |
EfiShellGetAlias ( | |
IN CONST CHAR16 *Command, | |
OUT BOOLEAN *Volatile OPTIONAL | |
); | |
/** | |
Changes a shell command alias. | |
This function creates an alias for a shell command or if Alias is NULL it will delete an existing alias. | |
this function does not check for built in alias'. | |
@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] 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_NOT_FOUND the Alias intended to be deleted was not found | |
**/ | |
EFI_STATUS | |
InternalSetAlias ( | |
IN CONST CHAR16 *Command, | |
IN CONST CHAR16 *Alias OPTIONAL, | |
IN BOOLEAN Volatile | |
); | |
/** | |
Changes a shell command alias. | |
This function creates an alias for a shell command or if Alias is NULL it will delete an existing alias. | |
@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_NOT_FOUND the Alias intended to be deleted was not found | |
@retval EFI_ACCESS_DENIED The alias is a built-in alias or already existed and Replace was set to | |
FALSE. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
EfiShellSetAlias ( | |
IN CONST CHAR16 *Command, | |
IN CONST CHAR16 *Alias OPTIONAL, | |
IN BOOLEAN Replace, | |
IN BOOLEAN Volatile | |
); | |
/** | |
Utility cleanup function for EFI_SHELL_FILE_INFO objects. | |
1) frees all pointers (non-NULL) | |
2) Closes the SHELL_FILE_HANDLE | |
@param FileListNode pointer to the list node to free | |
**/ | |
VOID | |
InternalFreeShellFileInfoNode ( | |
IN EFI_SHELL_FILE_INFO *FileListNode | |
); | |
/** | |
Internal variable setting function. Allows for setting of the read only variables. | |
@param Name Points to the NULL-terminated environment variable name. | |
@param Value Points to the NULL-terminated environment variable value. If the value is an | |
empty string then the environment variable is deleted. | |
@param Volatile Indicates whether the variable is non-volatile (FALSE) or volatile (TRUE). | |
@retval EFI_SUCCESS The environment variable was successfully updated. | |
**/ | |
EFI_STATUS | |
InternalEfiShellSetEnv ( | |
IN CONST CHAR16 *Name, | |
IN CONST CHAR16 *Value, | |
IN BOOLEAN Volatile | |
); | |
/** | |
Function to start monitoring for CTRL-C using SimpleTextInputEx. This | |
feature's enabled state was not known when the shell initially launched. | |
@retval EFI_SUCCESS The feature is enabled. | |
@retval EFI_OUT_OF_RESOURCES There is not enough memory available. | |
**/ | |
EFI_STATUS | |
InernalEfiShellStartMonitor ( | |
VOID | |
); | |
/** | |
Notification function for keystrokes. | |
@param[in] KeyData The key that was pressed. | |
@retval EFI_SUCCESS The operation was successful. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
NotificationFunction ( | |
IN EFI_KEY_DATA *KeyData | |
); | |
#endif //_SHELL_PROTOCOL_HEADER_ |