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