X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=ShellPkg%2FInclude%2FProtocol%2FEfiShellInterface.h;fp=ShellPkg%2FInclude%2FProtocol%2FEfiShellInterface.h;h=bc15b4bca792a132e8fbd2dbb21f89804d4531d5;hp=0000000000000000000000000000000000000000;hb=94b17fa1b669e55482efc7a8faec8c95e05d86ec;hpb=85a9032180adb8c489c44ab408dcc539d95d24ec diff --git a/ShellPkg/Include/Protocol/EfiShellInterface.h b/ShellPkg/Include/Protocol/EfiShellInterface.h new file mode 100644 index 0000000000..bc15b4bca7 --- /dev/null +++ b/ShellPkg/Include/Protocol/EfiShellInterface.h @@ -0,0 +1,96 @@ +/** @file + EFI Shell Interface protocol from EDK shell (no spec). + + Shell Interface - additional information (over image_info) provided + to an application started by the shell. + + ConIo - provides a file style interface to the console. Note that the + ConOut & ConIn interfaces in the system table will work as well, and both + all will be redirected to a file if needed on a command line + + The shell interface's and data (including ConIo) are only valid during + the applications Entry Point. Once the application returns from it's + entry point the data is freed by the invoking shell. + + Copyright (c) 2006 - 2009, Intel Corporation + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#ifndef _SHELLINTERFACE_H_ +#define _SHELLINTERFACE_H_ + +#include + +#define SHELL_INTERFACE_PROTOCOL_GUID \ + { \ + 0x47c7b223, 0xc42a, 0x11d2, 0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b \ + } + +/// +/// bit definitions for EFI_SHELL_ARG_INFO +/// +typedef enum { + ARG_NO_ATTRIB = 0x0, + ARG_IS_QUOTED = 0x1, + ARG_PARTIALLY_QUOTED = 0x2, + ARG_FIRST_HALF_QUOTED = 0x4, + ARG_FIRST_CHAR_IS_ESC = 0x8 +}; + +/// +/// attributes for an argument. +/// +typedef struct _EFI_SHELL_ARG_INFO { + UINT32 Attributes; +} EFI_SHELL_ARG_INFO; + +/// +/// This protocol provides access to additional information about a shell app. +/// +typedef struct { + /// + /// Handle back to original image handle & image info + /// + EFI_HANDLE ImageHandle; + EFI_LOADED_IMAGE_PROTOCOL *Info; + + /// + /// Parsed arg list converted more C like format + /// + CHAR16 **Argv; + UINTN Argc; + + /// + /// Storage for file redirection args after parsing + /// + CHAR16 **RedirArgv; + UINTN RedirArgc; + + /// + /// A file style handle for console io + /// + EFI_FILE_HANDLE StdIn; + EFI_FILE_HANDLE StdOut; + EFI_FILE_HANDLE StdErr; + + /// + /// list of attributes for each argument + /// + EFI_SHELL_ARG_INFO *ArgInfo; + + /// + /// whether we are echoing + /// + BOOLEAN EchoOn; +} EFI_SHELL_INTERFACE; + +extern EFI_GUID gEfiShellInterfaceGuid; + +#endif