4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Defines for EFI shell environment 2 ported to EDK II build environment. (no spec)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copyright (c) 2005 - 2010, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync which accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync http://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef _SHELL_ENVIRONMENT_2_PROTOCOL_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define _SHELL_ENVIRONMENT_2_PROTOCOL_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define DEFAULT_INIT_ROW 1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define DEFAULT_AUTO_LF FALSE
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function is a prototype for a function that dumps information on a protocol
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync to a given location. The location is dependant on the implementation. This is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync used when programatically adding shell commands.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Handle The handle the protocol is on.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Interface The interface to the protocol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_DUMP_PROTOCOL_INFO) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_HANDLE Handle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *Interface
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function is a prototype for each command internal to the EFI shell
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync implementation. The specific command depends on the implementation. This is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync used when programatically adding shell commands.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] ImageHandle The handle to the binary shell.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] SystemTable The pointer to the system table.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The command completed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval other An error occurred. Any error is possible
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync depending on the implementation of the shell
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync command.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_INTERNAL_COMMAND) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_HANDLE ImageHandle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_SYSTEM_TABLE *SystemTable
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function is a prototype for one that gets a help string for a given command.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This is used when programatically adding shell commands. Upon successful return
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the memory allocated is up to the caller to free.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Str Pointer to pointer to string to display for help.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The help string is in the parameter Str.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLCMD_GET_LINE_HELP) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT CHAR16 **Str
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncStructure returned from functions that open multiple files.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 Signature; ///< SHELL_FILE_ARG_SIGNATURE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LIST_ENTRY Link; ///< Linked list helper.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_STATUS Status; ///< File's status.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_FILE_HANDLE Parent; ///< What is the Parent file of this file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT64 OpenMode; ///< How was the file opened.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR16 *ParentName; ///< String representation of parent.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; ///< DevicePath for Parent.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR16 *FullName; ///< Path and file name for this file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR16 *FileName; ///< File name for this file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_FILE_HANDLE Handle; ///< Handle to this file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_FILE_INFO *Info; ///< Pointer to file info for this file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} SHELL_FILE_ARG;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Signature for SHELL_FILE_ARG.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SHELL_FILE_ARG_SIGNATURE SIGNATURE_32 ('g', 'r', 'a', 'f')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncGUID for the shell environment2 and shell environment.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SHELL_ENVIRONMENT_PROTOCOL_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0x47c7b221, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncGUID for the shell environment2 extension (main GUID above).
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SE_EXT_SIGNATURE_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0xd2c18636, 0x40e5, 0x4eb5, {0xa3, 0x1b, 0x36, 0x69, 0x5f, 0xd4, 0x2c, 0x87} \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SHELL_MAJOR_VER 0x00000001 ///< Major version of the EFI_SHELL_ENVIRONMENT2.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SHELL_MINOR_VER 0x00000000 ///< Minor version of the EFI_SHELL_ENVIRONMENT2.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Execute a command line.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function will run the CommandLine. This includes loading any required images,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync parsing any requires scripts, and if DebugOutput is TRUE printing errors
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync encountered directly to the screen.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] ParentImageHandle Handle of the image executing this operation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] CommandLine The string command line to execute.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] DebugOutput TRUE indicates that errors should be printed directly.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FALSE supresses error messages.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The command line executed and completed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_ABORTED The operation aborted.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER A parameter did not have a valid value.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES A required memory allocation failed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync@sa HandleProtocol
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_EXECUTE) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_HANDLE *ParentImageHandle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CHAR16 *CommandLine,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DebugOutput
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function returns a shell environment variable value.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Name The pointer to the string with the shell environment
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync variable name.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval NULL The shell environment variable's value could not be found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval !=NULL The value of the shell environment variable Name.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCHAR16 *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_GET_ENV) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CHAR16 *Name
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function returns a shell environment map value.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Name The pointer to the string with the shell environment
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync map name.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval NULL The shell environment map's value could not be found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval !=NULL The value of the shell environment map Name.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCHAR16 *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_GET_MAP) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CHAR16 *Name
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function will add an internal command to the shell interface.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This will allocate all required memory, put the new command on the command
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync list in the correct location.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Handler The handler function to call when the command gets called.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Cmd The command name.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] GetLineHelp The function to call of type "get help" for this command.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The command is now part of the command list.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES A memory allocation failed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @sa SHELLENV_INTERNAL_COMMAND
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @sa SHELLCMD_GET_LINE_HELP
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_ADD_CMD) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN SHELLENV_INTERNAL_COMMAND Handler,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CHAR16 *Cmd,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN SHELLCMD_GET_LINE_HELP GetLineHelp
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Internal interface to add protocol handlers.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function is for internal shell use only. This is how protocol handlers are added.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This will get the current protocol info and add the new info or update existing info
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync and then resave the info.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Protocol The pointer to the protocol's GUID.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] DumpToken The function pointer to dump token function or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] DumpInfo The function pointer to dump infomation function
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync or NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] IdString The English name of the protocol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_ADD_PROT) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_GUID *Protocol,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN SHELLENV_DUMP_PROTOCOL_INFO DumpToken OPTIONAL,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN SHELLENV_DUMP_PROTOCOL_INFO DumpInfo OPTIONAL,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CHAR16 *IdString
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function finds a protocol handle by a GUID.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function will check for already known protocols by GUID and if one is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync found it will return the name of that protocol. If no name is found and
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GenId is TRUE it will generate ths string.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Protocol The GUID of the protocol to look for.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] GenId Whether to generate a name string if it is not found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return !NULL The Name of the protocol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval NULL The Name was not found, and GenId was not TRUE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCHAR16*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_GET_PROT) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_GUID *Protocol,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN GenId
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function returns a string array containing the current directory on
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync a given device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync If DeviceName is specified, then return the current shell directory on that
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync device. If DeviceName is NULL, then return the current directory on the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync current device. The caller us responsible to free the returned string when
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync no longer required.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] DeviceName The name of the device to get the current
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync directory on, or NULL for current device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return String array with the current directory on the current or specified device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCHAR16*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_CUR_DIR) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CHAR16 *DeviceName OPTIONAL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function will open a group of files that match the Arg path, including
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync support for wildcard characters ('?' and '*') in the Arg path. If there are
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync any wildcard characters in the path this function will find any and all files
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync that match the wildcards. It returns a double linked list based on the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LIST_ENTRY linked list structure. Use this in conjunction with the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELL_FILE_ARG_SIGNATURE to get the SHELL_FILE_ARG structures that are returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The memory allocated by the callee for this list is freed by making a call to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_FREE_FILE_LIST.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Arg The pointer Path to files to open.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] ListHead The pointer to the allocated and initialized list head
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync upon which to append all opened file structures.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS One or more files was opened and a struct of each file's
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync information was appended to ListHead.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES A memory allocation failed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND No matching files could be found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @sa SHELLENV_FREE_FILE_LIST
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/typedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_FILE_META_ARG) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CHAR16 *Arg,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT LIST_ENTRY *ListHead
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This frees all of the nodes under the ListHead, but not ListHead itself.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] ListHead Pointer to list to free all nodes of.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS This function always returns EFI_SUCCESS.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_FREE_FILE_LIST) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT LIST_ENTRY *ListHead
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function creates a new instance of the ShellInterface protocol for use on
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the ImageHandle.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function is for internal shell usage. This will allocate and then populate
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_SHELL_INTERFACE protocol. It is the caller's responsibility to free the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync memory.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] ImageHandle The handle which will use the new ShellInterface
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync protocol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return The newly allocated shell interface protocol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_SHELL_INTERFACE*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_NEW_SHELL) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_HANDLE ImageHandle
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function determins whether a script file is currently being processed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync A script file (.nsh file) can contain a series of commands and this is useful to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync know for some shell commands whether they are being run manually or as part of a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync script.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval TRUE A script file is being processed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval FALSE A script file is not being processed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncBOOLEAN
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_BATCH_IS_ACTIVE) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This is an internal shell function to free any and all allocated resources.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This should be called immediately prior to closing the shell.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_FREE_RESOURCES) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function enables the page break mode.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This mode causes the output to pause after each complete screen to enable a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync user to more easily read it. If AutoWrap is TRUE, then rows with too many
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync characters will be chopped and divided into 2 rows. If FALSE, then rows with
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync too many characters may not be fully visible to the user on the screen.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] StartRow The row number to start this on.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] AutoWrap Whether to auto wrap rows that are too long.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_ENABLE_PAGE_BREAK) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN INT32 StartRow,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AutoWrap
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function disables the page break mode.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Disabling this causes the output to print out exactly as coded, with no breaks
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for readability.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_DISABLE_PAGE_BREAK) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Get the status of the page break output mode.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval FALSE Page break output mode is not enabled.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval TRUE Page break output mode is enabled.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncBOOLEAN
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_GET_PAGE_BREAK) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function sets the keys to filter for for the console in. The valid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync values to set are:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define EFI_OUTPUT_SCROLL 0x00000001
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define EFI_OUTPUT_PAUSE 0x00000002
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define EFI_EXECUTION_BREAK 0x00000004
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] KeyFilter The new key filter to use.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_SET_KEY_FILTER) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT32 KeyFilter
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function gets the keys to filter for for the console in.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The valid values to get are:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define EFI_OUTPUT_SCROLL 0x00000001
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define EFI_OUTPUT_PAUSE 0x00000002
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #define EFI_EXECUTION_BREAK 0x00000004
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval The current filter mask.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncUINT32
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_GET_KEY_FILTER) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function determins if the shell application should break.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This is used to inform a shell application that a break condition has been
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync initiated. Long loops should check this to prevent delays to the break.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval TRUE A break has been signaled. The application
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync should exit with EFI_ABORTED as soon as possible.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval FALSE Continue as normal.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncBOOLEAN
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_GET_EXECUTION_BREAK) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This is an internal shell function used to increment the shell nesting level.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_INCREMENT_SHELL_NESTING_LEVEL) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This is an internal shell function used to decrement the shell nesting level.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_DECREMENT_SHELL_NESTING_LEVEL) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function determins if the caller is running under the root shell.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval TRUE The caller is running under the root shell.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval FALSE The caller is not running under the root shell.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncBOOLEAN
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_IS_ROOT_SHELL) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Close the console proxy to restore the original console.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This is an internal shell function to handle shell cascading. It restores the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync original set of console protocols.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] ConInHandle The handle of ConIn.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] ConIn The pointer to the location to return the pointer to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the original console input.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] ConOutHandle The handle of ConOut
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] ConOut The pointer to the location to return the pointer to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the original console output.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_CLOSE_CONSOLE_PROXY) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_HANDLE ConInHandle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT EFI_SIMPLE_TEXT_INPUT_PROTOCOL **ConIn,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_HANDLE ConOutHandle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL **ConOut
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// declarations of handle enumerator
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync For ease of use the shell maps handle #'s to short numbers.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This is only done on request for various internal commands and the references
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are immediately freed when the internal command completes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *INIT_HANDLE_ENUMERATOR) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This is an internal shell function to enumerate the handle database.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function gets the next handle in the handle database. If no handles are
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync found, EFI_NOT_FOUND is returned. If the previous Handle was the last handle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync it is set to NULL before returning.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This must be called after INIT_HANDLE_ENUMERATOR and before CLOSE_HANDLE_ENUMERATOR.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Handle The pointer to pointer to Handle. It is set
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync on a sucessful return.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The next handle in the handle database is *Handle.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND There is not another handle.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *NEXT_HANDLE) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT EFI_HANDLE **Handle
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This is an internal shell function to enumerate the handle database.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function skips the next SkipNum handles in the handle database. If there
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are not enough handles left to skip that many EFI_ACCESS_DENIED is returned and
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync no skip is performed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This must be called after INIT_HANDLE_ENUMERATOR and before CLOSE_HANDLE_ENUMERATOR.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] SkipNum How many handles to skip
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The next handle in the handle database is *Handle
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_ACCESS_DENIED There are not SkipNum handles left in the database
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SKIP_HANDLE) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN SkipNum
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This is an internal shell function to enumerate the handle database.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function resets the the handle database so that NEXT_HANDLE and SKIP_HANDLE
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync will start from EnumIndex on the next call.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This must be called after INIT_HANDLE_ENUMERATOR and before CLOSE_HANDLE_ENUMERATOR.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] EnumIndex Where to start.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return The number of handles either read out or skipped before this reset.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncUINTN
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *RESET_HANDLE_ENUMERATOR) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN EnumIndex
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This is an internal shell function to enumerate the handle database.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This must be called after INIT_HANDLE_ENUMERATOR.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function releases all memory and resources associated with the handle database.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync After this no other handle enumerator functions except INIT_HANDLE_ENUMERATOR will
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync function properly.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *CLOSE_HANDLE_ENUMERATOR) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This is an internal shell function to enumerate the handle database.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function returns the number of handles in the handle database.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This must be called after INIT_HANDLE_ENUMERATOR and before CLOSE_HANDLE_ENUMERATOR.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return The number of handles in the handle database.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncUINTN
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *GET_NUM) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncHandle Enumerator structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync INIT_HANDLE_ENUMERATOR Init; ///< The pointer to INIT_HANDLE_ENUMERATOR function.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync NEXT_HANDLE Next; ///< The pointer to NEXT_HANDLE function.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SKIP_HANDLE Skip; ///< The pointer to SKIP_HANDLE function.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync RESET_HANDLE_ENUMERATOR Reset; ///< The pointer to RESET_HANDLE_ENUMERATOR function.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CLOSE_HANDLE_ENUMERATOR Close; ///< The pointer to CLOSE_HANDLE_ENUMERATOR function.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GET_NUM GetNum; ///< The pointer to GET_NUM function.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} HANDLE_ENUMERATOR;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Signature for the PROTOCOL_INFO structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PROTOCOL_INFO_SIGNATURE SIGNATURE_32 ('s', 'p', 'i', 'n')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PROTOCOL_INFO structure for protocol enumerator functions.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN Signature; ///< PROTOCOL_INFO_SIGNATURE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LIST_ENTRY Link; ///< Standard linked list helper member.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // The parsing info for the protocol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_GUID ProtocolId; ///< The GUID for the protocol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR16 *IdString; ///< The name of the protocol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_DUMP_PROTOCOL_INFO DumpToken; ///< The pointer to DumpToken function for the protocol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_DUMP_PROTOCOL_INFO DumpInfo; ///< The pointer to DumpInfo function for the protocol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Patabase info on which handles are supporting this protocol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN NoHandles; ///< The number of handles producing this protocol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_HANDLE *Handles; ///< The array of handles.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} PROTOCOL_INFO;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Declarations of protocol info enumerator.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This is an internal shell function to initialize the protocol enumerator.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This must be called before NEXT_PROTOCOL_INFO, SKIP_PROTOCOL_INFO,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync RESET_PROTOCOL_INFO_ENUMERATOR, and CLOSE_PROTOCOL_INFO_ENUMERATOR are
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync called.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *INIT_PROTOCOL_INFO_ENUMERATOR) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function is an internal shell function for enumeration of protocols.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function returns the next protocol on the list. If this is called
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync immediately after initialization, it will return the first protocol on the list.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync If this is called immediately after reset, it will return the first protocol again.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This cannot be called after CLOSE_PROTOCOL_INFO_ENUMERATOR, but it must be
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync called after INIT_PROTOCOL_INFO_ENUMERATOR.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] ProtocolInfo The pointer to pointer to protocol information structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The next protocol's information was sucessfully returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval NULL There are no more protocols.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *NEXT_PROTOCOL_INFO) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT PROTOCOL_INFO **ProtocolInfo
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function is an internal shell function for enumeration of protocols.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This cannot be called after CLOSE_PROTOCOL_INFO_ENUMERATOR, but it must be
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync called after INIT_PROTOCOL_INFO_ENUMERATOR.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function does nothing and always returns EFI_SUCCESS.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Always returned (see above).
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SKIP_PROTOCOL_INFO) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN SkipNum
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function is an internal shell function for enumeration of protocols.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This cannot be called after CLOSE_PROTOCOL_INFO_ENUMERATOR, but it must be
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync called after INIT_PROTOCOL_INFO_ENUMERATOR.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function resets the list of protocols such that the next one in the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync list is the begining of the list.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *RESET_PROTOCOL_INFO_ENUMERATOR) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function is an internal shell function for enumeration of protocols.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This must be called after INIT_PROTOCOL_INFO_ENUMERATOR. After this call
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync no protocol enumerator calls except INIT_PROTOCOL_INFO_ENUMERATOR may be made.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function frees any memory or resources associated with the protocol
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync enumerator.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *CLOSE_PROTOCOL_INFO_ENUMERATOR) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Protocol enumerator structure of function pointers.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync INIT_PROTOCOL_INFO_ENUMERATOR Init; ///< The pointer to INIT_PROTOCOL_INFO_ENUMERATOR function.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync NEXT_PROTOCOL_INFO Next; ///< The pointer to NEXT_PROTOCOL_INFO function.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SKIP_PROTOCOL_INFO Skip; ///< The pointer to SKIP_PROTOCOL_INFO function.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync RESET_PROTOCOL_INFO_ENUMERATOR Reset; ///< The pointer to RESET_PROTOCOL_INFO_ENUMERATOR function.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CLOSE_PROTOCOL_INFO_ENUMERATOR Close; ///< The pointer to CLOSE_PROTOCOL_INFO_ENUMERATOR function.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} PROTOCOL_INFO_ENUMERATOR;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function is used to retrieve a user-friendly display name for a handle.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync If UseComponentName is TRUE then the component name protocol for this device
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync or it's parent device (if required) will be used to obtain the name of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync device. If UseDevicePath is TRUE it will get the human readable device path
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync and return that. If both are TRUE it will try to use component name first
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync and device path if that fails.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync It will use either ComponentName or ComponentName2 protocol, depending on
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync what is present.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function will furthur verify whether the handle in question produced either
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_DRIVER_CONFIGRATION_PROTOCOL or EFI_DRIVER_CONFIGURATION2_PROTOCOL and also
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync whether the handle in question produced either EFI_DRIVER_DIAGNOSTICS_PROTOCOL or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_DRIVER_DIAGNOSTICS2_PROTOCOL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Upon successful return, the memory for *BestDeviceName is up to the caller to free.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] DeviceHandle The device handle whose name is desired.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] UseComponentName Whether to use the ComponentName protocol at all.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] UseDevicePath Whether to use the DevicePath protocol at all.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Language The pointer to the language string to use.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] BestDeviceName The pointer to pointer to string allocated with the name.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] ConfigurationStatus The pointer to status for opening a Configuration protocol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] DiagnosticsStatus The pointer to status for opening a Diagnostics protocol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Display Whether to Print this out to default Print location.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Indent How many characters to indent the printing.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS This function always returns EFI_SUCCESS.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *GET_DEVICE_NAME) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_HANDLE DeviceHandle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN UseComponentName,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN UseDevicePath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CHAR8 *Language,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT CHAR16 **BestDeviceName,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT EFI_STATUS *ConfigurationStatus,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT EFI_STATUS *DiagnosticsStatus,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN Display,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN Indent
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SHELL_COMPATIBLE_MODE_VER L"1.1.1" ///< The string for lowest version this shell supports.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SHELL_ENHANCED_MODE_VER L"1.1.2" ///< The string for highest version this shell supports.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function gets the shell mode as stored in the shell environment
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "efishellmode". It will not fail.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] Mode Returns a string representing one of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 2 supported modes of the shell.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS This function always returns success.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *GET_SHELL_MODE) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT CHAR16 **Mode
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Convert a file system style name to a device path.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function will convert a shell path name to a Device Path Protocol path.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function will allocate any required memory for this operation and it
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is the responsibility of the caller to free that memory when no longer required.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync If anything prevents the complete conversion free any allocated memory and
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Path The path to convert.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval !NULL A pointer to the callee allocated Device Path.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval NULL The operation could not be completed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_DEVICE_PATH_PROTOCOL*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_NAME_TO_PATH) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CHAR16 *Path
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a device path into a file system map name.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync If DevPath is NULL, then ASSERT.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function looks through the shell environment map for a map whose device
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync path matches the DevPath parameter. If one is found the Name is returned via
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Name parameter. If sucessful the caller must free the memory allocated for
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Name.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function will use the internal lock to prevent changes to the map during
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the lookup operation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] DevPath The device path to search for a name for.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] ConsistMapping What state to verify map flag VAR_ID_CONSIST.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] Name On sucessful return the name of that device path.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The DevPath was found and the name returned
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync in Name.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES A required memory allocation failed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_UNSUPPORTED The DevPath was not found in the map.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_GET_FS_NAME) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_DEVICE_PATH_PROTOCOL * DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN ConsistMapping,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT CHAR16 **Name
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function will open a group of files that match the Arg path, but will not
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync support the wildcard characters ('?' and '*') in the Arg path. If there are
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync any wildcard characters in the path this function will return
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_INVALID_PARAMETER. The return is a double linked list based on the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LIST_ENTRY linked list structure. Use this in conjunction with the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELL_FILE_ARG_SIGNATURE to get the SHELL_FILE_ARG structures that are returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The memory allocated by the callee for this list is freed by making a call to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_FREE_FILE_LIST.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Arg The pointer to the path of the files to be opened.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] ListHead The pointer to allocated and initialized list head
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync upon which to append all the opened file structures.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS One or more files was opened and a struct of each file's
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync information was appended to ListHead.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES A memory allocation failed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND No matching files could be found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @sa SHELLENV_FREE_FILE_LIST
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_FILE_META_ARG_NO_WILDCARD) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CHAR16 *Arg,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT LIST_ENTRY *ListHead
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function removes duplicate file listings from lists.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This is a function for use with SHELLENV_FILE_META_ARG_NO_WILDCARD and
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_FILE_META_ARG. This function will verify that there are no duplicate
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync files in the list of returned files. Any file listed twice will have one of its
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync instances removed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] ListHead The pointer to linked list head that was returned from
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_FILE_META_ARG_NO_WILDCARD or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_FILE_META_ARG.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS This function always returns success.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_DEL_DUP_FILE) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN LIST_ENTRY * ListHead
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a File System map name to a device path.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync If DevPath is NULL, then ASSERT().
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function looks through the shell environment map for a map whose Name
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync matches the Name parameter. If one is found, the device path pointer is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync updated to point to that file systems device path. The caller should not
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync free the memory from that device path.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function will use the internal lock to prevent changes to the map during
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the lookup operation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Name The pointer to the NULL terminated UNICODE string of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync file system name.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] DevPath The pointer to pointer to DevicePath. Only valid on
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync successful return.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The conversion was successful, and the device
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync path was returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND The file system could not be found in the map.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *SHELLENV_GET_FS_DEVICE_PATH) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CHAR16 *Name,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT EFI_DEVICE_PATH_PROTOCOL **DevPath
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// EFI_SHELL_ENVIRONMENT2 protocol structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_EXECUTE Execute;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_GET_ENV GetEnv;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_GET_MAP GetMap;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_ADD_CMD AddCmd;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_ADD_PROT AddProt;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_GET_PROT GetProt;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_CUR_DIR CurDir;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_FILE_META_ARG FileMetaArg;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_FREE_FILE_LIST FreeFileList;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // The following services are only used by the shell itself.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_NEW_SHELL NewShell;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_BATCH_IS_ACTIVE BatchIsActive;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_FREE_RESOURCES FreeResources;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // GUID to differentiate ShellEnvironment2 from ShellEnvironment.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_GUID SESGuid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Major Version grows if shell environment interface has been changes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 MajorVersion;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 MinorVersion;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_ENABLE_PAGE_BREAK EnablePageBreak;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_DISABLE_PAGE_BREAK DisablePageBreak;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_GET_PAGE_BREAK GetPageBreak;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_SET_KEY_FILTER SetKeyFilter;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_GET_KEY_FILTER GetKeyFilter;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_GET_EXECUTION_BREAK GetExecutionBreak;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_INCREMENT_SHELL_NESTING_LEVEL IncrementShellNestingLevel;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_DECREMENT_SHELL_NESTING_LEVEL DecrementShellNestingLevel;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_IS_ROOT_SHELL IsRootShell;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_CLOSE_CONSOLE_PROXY CloseConsoleProxy;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync HANDLE_ENUMERATOR HandleEnumerator;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PROTOCOL_INFO_ENUMERATOR ProtocolInfoEnumerator;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GET_DEVICE_NAME GetDeviceName;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GET_SHELL_MODE GetShellMode;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_NAME_TO_PATH NameToPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_GET_FS_NAME GetFsName;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_FILE_META_ARG_NO_WILDCARD FileMetaArgNoWildCard;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_DEL_DUP_FILE DelDupFileArg;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SHELLENV_GET_FS_DEVICE_PATH GetFsDevicePath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_SHELL_ENVIRONMENT2;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiShellEnvironment2Guid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiShellEnvironment2ExtGuid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif // _SHELL_ENVIRONMENT_2_PROTOCOL_H_