123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938 |
- /** @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_
|