]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Include/Protocol/EfiShell.h
ShellPkg: Fix EFI_SHELL_PROTOCOL to contain new members from UEFI Shell 2.1 spec
[mirror_edk2.git] / ShellPkg / Include / Protocol / EfiShell.h
index ca21899df74ff80edca72e6e02f74188f46b762d..2ef6857adb84d4396cee0930db51121b105fdf0b 100644 (file)
@@ -1,6 +1,7 @@
 /** @file\r
   EFI Shell protocol as defined in the UEFI Shell 2.0 specification including errata.\r
 \r
 /** @file\r
   EFI Shell protocol as defined in the UEFI Shell 2.0 specification including errata.\r
 \r
+  (C) Copyright 2014, Hewlett-Packard Development Company, L.P.\r
   Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
@@ -1051,55 +1052,31 @@ EFI_STATUS
   IN VOID                       *Buffer\r
   );\r
 \r
   IN VOID                       *Buffer\r
   );\r
 \r
-typedef struct _EFI_SHELL_PROTOCOL {\r
-  EFI_SHELL_EXECUTE                         Execute;\r
-  EFI_SHELL_GET_ENV                         GetEnv;\r
-  EFI_SHELL_SET_ENV                         SetEnv;\r
-  EFI_SHELL_GET_ALIAS                       GetAlias;\r
-  EFI_SHELL_SET_ALIAS                       SetAlias;\r
-  EFI_SHELL_GET_HELP_TEXT                   GetHelpText;\r
-  EFI_SHELL_GET_DEVICE_PATH_FROM_MAP        GetDevicePathFromMap;\r
-  EFI_SHELL_GET_MAP_FROM_DEVICE_PATH        GetMapFromDevicePath;\r
-  EFI_SHELL_GET_DEVICE_PATH_FROM_FILE_PATH  GetDevicePathFromFilePath;\r
-  EFI_SHELL_GET_FILE_PATH_FROM_DEVICE_PATH  GetFilePathFromDevicePath;\r
-  EFI_SHELL_SET_MAP                         SetMap;\r
-  EFI_SHELL_GET_CUR_DIR                     GetCurDir;\r
-  EFI_SHELL_SET_CUR_DIR                     SetCurDir;\r
-  EFI_SHELL_OPEN_FILE_LIST                  OpenFileList;\r
-  EFI_SHELL_FREE_FILE_LIST                  FreeFileList;\r
-  EFI_SHELL_REMOVE_DUP_IN_FILE_LIST         RemoveDupInFileList;\r
-  EFI_SHELL_BATCH_IS_ACTIVE                 BatchIsActive;\r
-  EFI_SHELL_IS_ROOT_SHELL                   IsRootShell;\r
-  EFI_SHELL_ENABLE_PAGE_BREAK               EnablePageBreak;\r
-  EFI_SHELL_DISABLE_PAGE_BREAK              DisablePageBreak;\r
-  EFI_SHELL_GET_PAGE_BREAK                  GetPageBreak;\r
-  EFI_SHELL_GET_DEVICE_NAME                 GetDeviceName;\r
-  EFI_SHELL_GET_FILE_INFO                   GetFileInfo;\r
-  EFI_SHELL_SET_FILE_INFO                   SetFileInfo;\r
-  EFI_SHELL_OPEN_FILE_BY_NAME               OpenFileByName;\r
-  EFI_SHELL_CLOSE_FILE                      CloseFile;\r
-  EFI_SHELL_CREATE_FILE                     CreateFile;\r
-  EFI_SHELL_READ_FILE                       ReadFile;\r
-  EFI_SHELL_WRITE_FILE                      WriteFile;\r
-  EFI_SHELL_DELETE_FILE                     DeleteFile;\r
-  EFI_SHELL_DELETE_FILE_BY_NAME             DeleteFileByName;\r
-  EFI_SHELL_GET_FILE_POSITION               GetFilePosition;\r
-  EFI_SHELL_SET_FILE_POSITION               SetFilePosition;\r
-  EFI_SHELL_FLUSH_FILE                      FlushFile;\r
-  EFI_SHELL_FIND_FILES                      FindFiles;\r
-  EFI_SHELL_FIND_FILES_IN_DIR               FindFilesInDir;\r
-  EFI_SHELL_GET_FILE_SIZE                   GetFileSize;\r
-  EFI_SHELL_OPEN_ROOT                       OpenRoot;\r
-  EFI_SHELL_OPEN_ROOT_BY_HANDLE             OpenRootByHandle;\r
-  EFI_EVENT                                 ExecutionBreak;\r
-  UINT32                                    MajorVersion;\r
-  UINT32                                    MinorVersion;\r
-} EFI_SHELL_PROTOCOL;\r
-\r
 //\r
 //\r
-// The new structure with extra functions for UEFI Shell Specification 2.1\r
+// EFI_SHELL_PROTOCOL has been updated since UEFI Shell Spec 2.0\r
+// Usage of this protocol will require version checking before attempting\r
+// to use any new members.  There is no need to check the version for\r
+// members that existed in UEFI Shell Spec 2.0.\r
+//\r
+// Update below for any future UEFI Shell spec changes to this protocol.\r
 //\r
 //\r
-typedef struct _EFI_SHELL_PROTOCOL21 {\r
+// Check EFI_SHELL_PROTOCOL MajorVersion and MinorVersion:\r
+// if ((2 == gEfiShellProtocol->MajorVersion) &&\r
+//     (0 == gEfiShellProtocol->MinorVersion)) {\r
+//   //\r
+//   // Cannot call:\r
+//   // RegisterGuidName - UEFI Shell 2.1\r
+//   // GetGuidName      - UEFI Shell 2.1\r
+//   // GetGuidFromName  - UEFI Shell 2.1\r
+//   // GetEnvEx         - UEFI Shell 2.1\r
+//   //\r
+// } else {\r
+//   //\r
+//   // Can use all members\r
+//   //\r
+// }\r
+//\r
+typedef struct _EFI_SHELL_PROTOCOL {\r
   EFI_SHELL_EXECUTE                         Execute;\r
   EFI_SHELL_GET_ENV                         GetEnv;\r
   EFI_SHELL_SET_ENV                         SetEnv;\r
   EFI_SHELL_EXECUTE                         Execute;\r
   EFI_SHELL_GET_ENV                         GetEnv;\r
   EFI_SHELL_SET_ENV                         SetEnv;\r
@@ -1143,11 +1120,11 @@ typedef struct _EFI_SHELL_PROTOCOL21 {
   UINT32                                    MajorVersion;\r
   UINT32                                    MinorVersion;\r
   // Added for Shell 2.1\r
   UINT32                                    MajorVersion;\r
   UINT32                                    MinorVersion;\r
   // Added for Shell 2.1\r
-  EFI_SHELL_REGISTER_GUID_NAME             RegisterGuidName;\r
-  EFI_SHELL_GET_GUID_NAME                  GetGuidName;\r
-  EFI_SHELL_GET_GUID_FROM_NAME             GetGuidFromName;\r
-  EFI_SHELL_GET_ENV_EX                     GetEnvEx;\r
-} EFI_SHELL_PROTOCOL21;\r
+  EFI_SHELL_REGISTER_GUID_NAME              RegisterGuidName;\r
+  EFI_SHELL_GET_GUID_NAME                   GetGuidName;\r
+  EFI_SHELL_GET_GUID_FROM_NAME              GetGuidFromName;\r
+  EFI_SHELL_GET_ENV_EX                      GetEnvEx;\r
+} EFI_SHELL_PROTOCOL;\r
 \r
 extern EFI_GUID gEfiShellProtocolGuid;\r
 \r
 \r
 extern EFI_GUID gEfiShellProtocolGuid;\r
 \r