1 1.1 jmcneill /* $NetBSD: efishell.h,v 1.1.1.1 2021/09/30 18:50:09 jmcneill Exp $ */ 2 1.1 jmcneill 3 1.1 jmcneill /** 4 1.1 jmcneill EFI Shell protocol as defined in the UEFI Shell Specification 2.2. 5 1.1 jmcneill 6 1.1 jmcneill (C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR> 7 1.1 jmcneill Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> 8 1.1 jmcneill SPDX-License-Identifier: BSD-2-Clause-Patent 9 1.1 jmcneill 10 1.1 jmcneill This file is based on MdePkg/Include/Protocol/Shell.h from EDK2 11 1.1 jmcneill Ported to gnu-efi by Jiaqing Zhao <jiaqing.zhao (at) intel.com> 12 1.1 jmcneill **/ 13 1.1 jmcneill 14 1.1 jmcneill #ifndef _EFI_SHELL_H 15 1.1 jmcneill #define _EFI_SHELL_H 16 1.1 jmcneill 17 1.1 jmcneill #include "efilink.h" 18 1.1 jmcneill 19 1.1 jmcneill #define EFI_SHELL_PROTOCOL_GUID \ 20 1.1 jmcneill { 0x6302d008, 0x7f9b, 0x4f30, { 0x87, 0xac, 0x60, 0xc9, 0xfe, 0xf5, 0xda, 0x4e } } 21 1.1 jmcneill 22 1.1 jmcneill INTERFACE_DECL(_EFI_SHELL_PROTOCOL); 23 1.1 jmcneill 24 1.1 jmcneill typedef enum { 25 1.1 jmcneill SHELL_SUCCESS = 0, 26 1.1 jmcneill SHELL_LOAD_ERROR = 1, 27 1.1 jmcneill SHELL_INVALID_PARAMETER = 2, 28 1.1 jmcneill SHELL_UNSUPPORTED = 3, 29 1.1 jmcneill SHELL_BAD_BUFFER_SIZE = 4, 30 1.1 jmcneill SHELL_BUFFER_TOO_SMALL = 5, 31 1.1 jmcneill SHELL_NOT_READY = 6, 32 1.1 jmcneill SHELL_DEVICE_ERROR = 7, 33 1.1 jmcneill SHELL_WRITE_PROTECTED = 8, 34 1.1 jmcneill SHELL_OUT_OF_RESOURCES = 9, 35 1.1 jmcneill SHELL_VOLUME_CORRUPTED = 10, 36 1.1 jmcneill SHELL_VOLUME_FULL = 11, 37 1.1 jmcneill SHELL_NO_MEDIA = 12, 38 1.1 jmcneill SHELL_MEDIA_CHANGED = 13, 39 1.1 jmcneill SHELL_NOT_FOUND = 14, 40 1.1 jmcneill SHELL_ACCESS_DENIED = 15, 41 1.1 jmcneill SHELL_TIMEOUT = 18, 42 1.1 jmcneill SHELL_NOT_STARTED = 19, 43 1.1 jmcneill SHELL_ALREADY_STARTED = 20, 44 1.1 jmcneill SHELL_ABORTED = 21, 45 1.1 jmcneill SHELL_INCOMPATIBLE_VERSION = 25, 46 1.1 jmcneill SHELL_SECURITY_VIOLATION = 26, 47 1.1 jmcneill SHELL_NOT_EQUAL = 27 48 1.1 jmcneill } SHELL_STATUS; 49 1.1 jmcneill 50 1.1 jmcneill typedef VOID *SHELL_FILE_HANDLE; 51 1.1 jmcneill 52 1.1 jmcneill typedef struct { 53 1.1 jmcneill EFI_LIST_ENTRY Link; 54 1.1 jmcneill EFI_STATUS Status; 55 1.1 jmcneill CONST CHAR16 *FullName; 56 1.1 jmcneill CONST CHAR16 *FileName; 57 1.1 jmcneill SHELL_FILE_HANDLE Handle; 58 1.1 jmcneill EFI_FILE_INFO *Info; 59 1.1 jmcneill } EFI_SHELL_FILE_INFO; 60 1.1 jmcneill 61 1.1 jmcneill typedef 62 1.1 jmcneill BOOLEAN 63 1.1 jmcneill (EFIAPI *EFI_SHELL_BATCH_IS_ACTIVE) ( 64 1.1 jmcneill VOID 65 1.1 jmcneill ); 66 1.1 jmcneill 67 1.1 jmcneill typedef 68 1.1 jmcneill EFI_STATUS 69 1.1 jmcneill (EFIAPI *EFI_SHELL_CLOSE_FILE) ( 70 1.1 jmcneill IN SHELL_FILE_HANDLE FileHandle 71 1.1 jmcneill ); 72 1.1 jmcneill 73 1.1 jmcneill typedef 74 1.1 jmcneill EFI_STATUS 75 1.1 jmcneill (EFIAPI *EFI_SHELL_CREATE_FILE) ( 76 1.1 jmcneill IN CONST CHAR16 *FileName, 77 1.1 jmcneill IN UINT64 FileAttribs, 78 1.1 jmcneill OUT SHELL_FILE_HANDLE *FileHandle 79 1.1 jmcneill ); 80 1.1 jmcneill 81 1.1 jmcneill typedef 82 1.1 jmcneill EFI_STATUS 83 1.1 jmcneill (EFIAPI *EFI_SHELL_DELETE_FILE) ( 84 1.1 jmcneill IN SHELL_FILE_HANDLE FileHandle 85 1.1 jmcneill ); 86 1.1 jmcneill 87 1.1 jmcneill typedef 88 1.1 jmcneill EFI_STATUS 89 1.1 jmcneill (EFIAPI *EFI_SHELL_DELETE_FILE_BY_NAME) ( 90 1.1 jmcneill IN CONST CHAR16 *FileName 91 1.1 jmcneill ); 92 1.1 jmcneill 93 1.1 jmcneill typedef 94 1.1 jmcneill VOID 95 1.1 jmcneill (EFIAPI *EFI_SHELL_DISABLE_PAGE_BREAK) ( 96 1.1 jmcneill VOID 97 1.1 jmcneill ); 98 1.1 jmcneill 99 1.1 jmcneill typedef 100 1.1 jmcneill VOID 101 1.1 jmcneill (EFIAPI *EFI_SHELL_ENABLE_PAGE_BREAK) ( 102 1.1 jmcneill VOID 103 1.1 jmcneill ); 104 1.1 jmcneill 105 1.1 jmcneill typedef 106 1.1 jmcneill EFI_STATUS 107 1.1 jmcneill (EFIAPI *EFI_SHELL_EXECUTE) ( 108 1.1 jmcneill IN EFI_HANDLE *ParentImageHandle, 109 1.1 jmcneill IN CHAR16 *CommandLine OPTIONAL, 110 1.1 jmcneill IN CHAR16 **Environment OPTIONAL, 111 1.1 jmcneill OUT EFI_STATUS *StatusCode OPTIONAL 112 1.1 jmcneill ); 113 1.1 jmcneill 114 1.1 jmcneill typedef 115 1.1 jmcneill EFI_STATUS 116 1.1 jmcneill (EFIAPI *EFI_SHELL_FIND_FILES) ( 117 1.1 jmcneill IN CONST CHAR16 *FilePattern, 118 1.1 jmcneill OUT EFI_SHELL_FILE_INFO **FileList 119 1.1 jmcneill ); 120 1.1 jmcneill 121 1.1 jmcneill typedef 122 1.1 jmcneill EFI_STATUS 123 1.1 jmcneill (EFIAPI *EFI_SHELL_FIND_FILES_IN_DIR) ( 124 1.1 jmcneill IN SHELL_FILE_HANDLE FileDirHandle, 125 1.1 jmcneill OUT EFI_SHELL_FILE_INFO **FileList 126 1.1 jmcneill ); 127 1.1 jmcneill 128 1.1 jmcneill typedef 129 1.1 jmcneill EFI_STATUS 130 1.1 jmcneill (EFIAPI *EFI_SHELL_FLUSH_FILE) ( 131 1.1 jmcneill IN SHELL_FILE_HANDLE FileHandle 132 1.1 jmcneill ); 133 1.1 jmcneill 134 1.1 jmcneill typedef 135 1.1 jmcneill EFI_STATUS 136 1.1 jmcneill (EFIAPI *EFI_SHELL_FREE_FILE_LIST) ( 137 1.1 jmcneill IN EFI_SHELL_FILE_INFO **FileList 138 1.1 jmcneill ); 139 1.1 jmcneill 140 1.1 jmcneill typedef 141 1.1 jmcneill CONST CHAR16 * 142 1.1 jmcneill (EFIAPI *EFI_SHELL_GET_ALIAS) ( 143 1.1 jmcneill IN CONST CHAR16 *Alias, 144 1.1 jmcneill OUT BOOLEAN *Volatile OPTIONAL 145 1.1 jmcneill ); 146 1.1 jmcneill 147 1.1 jmcneill typedef 148 1.1 jmcneill CONST CHAR16 * 149 1.1 jmcneill (EFIAPI *EFI_SHELL_GET_CUR_DIR) ( 150 1.1 jmcneill IN CONST CHAR16 *FileSystemMapping OPTIONAL 151 1.1 jmcneill ); 152 1.1 jmcneill 153 1.1 jmcneill typedef UINT32 EFI_SHELL_DEVICE_NAME_FLAGS; 154 1.1 jmcneill #define EFI_DEVICE_NAME_USE_COMPONENT_NAME 0x00000001 155 1.1 jmcneill #define EFI_DEVICE_NAME_USE_DEVICE_PATH 0x00000002 156 1.1 jmcneill 157 1.1 jmcneill typedef 158 1.1 jmcneill EFI_STATUS 159 1.1 jmcneill (EFIAPI *EFI_SHELL_GET_DEVICE_NAME) ( 160 1.1 jmcneill IN EFI_HANDLE DeviceHandle, 161 1.1 jmcneill IN EFI_SHELL_DEVICE_NAME_FLAGS Flags, 162 1.1 jmcneill IN CHAR8 *Language, 163 1.1 jmcneill OUT CHAR16 **BestDeviceName 164 1.1 jmcneill ); 165 1.1 jmcneill 166 1.1 jmcneill typedef 167 1.1 jmcneill CONST EFI_DEVICE_PATH_PROTOCOL * 168 1.1 jmcneill (EFIAPI *EFI_SHELL_GET_DEVICE_PATH_FROM_MAP) ( 169 1.1 jmcneill IN CONST CHAR16 *Mapping 170 1.1 jmcneill ); 171 1.1 jmcneill 172 1.1 jmcneill typedef 173 1.1 jmcneill EFI_DEVICE_PATH_PROTOCOL * 174 1.1 jmcneill (EFIAPI *EFI_SHELL_GET_DEVICE_PATH_FROM_FILE_PATH) ( 175 1.1 jmcneill IN CONST CHAR16 *Path 176 1.1 jmcneill ); 177 1.1 jmcneill 178 1.1 jmcneill typedef 179 1.1 jmcneill CONST CHAR16 * 180 1.1 jmcneill (EFIAPI *EFI_SHELL_GET_ENV) ( 181 1.1 jmcneill IN CONST CHAR16 *Name 182 1.1 jmcneill ); 183 1.1 jmcneill 184 1.1 jmcneill typedef 185 1.1 jmcneill CONST CHAR16 * 186 1.1 jmcneill (EFIAPI *EFI_SHELL_GET_ENV_EX) ( 187 1.1 jmcneill IN CONST CHAR16 *Name, 188 1.1 jmcneill OUT UINT32 *Attributes OPTIONAL 189 1.1 jmcneill ); 190 1.1 jmcneill 191 1.1 jmcneill typedef 192 1.1 jmcneill EFI_FILE_INFO * 193 1.1 jmcneill (EFIAPI *EFI_SHELL_GET_FILE_INFO) ( 194 1.1 jmcneill IN SHELL_FILE_HANDLE FileHandle 195 1.1 jmcneill ); 196 1.1 jmcneill 197 1.1 jmcneill typedef 198 1.1 jmcneill CHAR16 * 199 1.1 jmcneill (EFIAPI *EFI_SHELL_GET_FILE_PATH_FROM_DEVICE_PATH) ( 200 1.1 jmcneill IN CONST EFI_DEVICE_PATH_PROTOCOL *Path 201 1.1 jmcneill ); 202 1.1 jmcneill 203 1.1 jmcneill typedef 204 1.1 jmcneill EFI_STATUS 205 1.1 jmcneill (EFIAPI *EFI_SHELL_GET_FILE_POSITION) ( 206 1.1 jmcneill IN SHELL_FILE_HANDLE FileHandle, 207 1.1 jmcneill OUT UINT64 *Position 208 1.1 jmcneill ); 209 1.1 jmcneill 210 1.1 jmcneill typedef 211 1.1 jmcneill EFI_STATUS 212 1.1 jmcneill (EFIAPI *EFI_SHELL_GET_FILE_SIZE) ( 213 1.1 jmcneill IN SHELL_FILE_HANDLE FileHandle, 214 1.1 jmcneill OUT UINT64 *Size 215 1.1 jmcneill ); 216 1.1 jmcneill 217 1.1 jmcneill typedef 218 1.1 jmcneill EFI_STATUS 219 1.1 jmcneill (EFIAPI *EFI_SHELL_GET_GUID_FROM_NAME) ( 220 1.1 jmcneill IN CONST CHAR16 *GuidName, 221 1.1 jmcneill OUT EFI_GUID *Guid 222 1.1 jmcneill ); 223 1.1 jmcneill 224 1.1 jmcneill typedef 225 1.1 jmcneill EFI_STATUS 226 1.1 jmcneill (EFIAPI *EFI_SHELL_GET_GUID_NAME)( 227 1.1 jmcneill IN CONST EFI_GUID *Guid, 228 1.1 jmcneill OUT CONST CHAR16 **GuidName 229 1.1 jmcneill ); 230 1.1 jmcneill 231 1.1 jmcneill typedef 232 1.1 jmcneill EFI_STATUS 233 1.1 jmcneill (EFIAPI *EFI_SHELL_GET_HELP_TEXT) ( 234 1.1 jmcneill IN CONST CHAR16 *Command, 235 1.1 jmcneill IN CONST CHAR16 *Sections, 236 1.1 jmcneill OUT CHAR16 **HelpText 237 1.1 jmcneill ); 238 1.1 jmcneill 239 1.1 jmcneill typedef 240 1.1 jmcneill CONST CHAR16 * 241 1.1 jmcneill (EFIAPI *EFI_SHELL_GET_MAP_FROM_DEVICE_PATH) ( 242 1.1 jmcneill IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath 243 1.1 jmcneill ); 244 1.1 jmcneill 245 1.1 jmcneill typedef 246 1.1 jmcneill BOOLEAN 247 1.1 jmcneill (EFIAPI *EFI_SHELL_GET_PAGE_BREAK) ( 248 1.1 jmcneill VOID 249 1.1 jmcneill ); 250 1.1 jmcneill 251 1.1 jmcneill typedef 252 1.1 jmcneill BOOLEAN 253 1.1 jmcneill (EFIAPI *EFI_SHELL_IS_ROOT_SHELL) ( 254 1.1 jmcneill VOID 255 1.1 jmcneill ); 256 1.1 jmcneill 257 1.1 jmcneill typedef 258 1.1 jmcneill EFI_STATUS 259 1.1 jmcneill (EFIAPI *EFI_SHELL_OPEN_FILE_BY_NAME) ( 260 1.1 jmcneill IN CONST CHAR16 *FileName, 261 1.1 jmcneill OUT SHELL_FILE_HANDLE *FileHandle, 262 1.1 jmcneill IN UINT64 OpenMode 263 1.1 jmcneill ); 264 1.1 jmcneill 265 1.1 jmcneill typedef 266 1.1 jmcneill EFI_STATUS 267 1.1 jmcneill (EFIAPI *EFI_SHELL_OPEN_FILE_LIST) ( 268 1.1 jmcneill IN CHAR16 *Path, 269 1.1 jmcneill IN UINT64 OpenMode, 270 1.1 jmcneill IN OUT EFI_SHELL_FILE_INFO **FileList 271 1.1 jmcneill ); 272 1.1 jmcneill 273 1.1 jmcneill typedef 274 1.1 jmcneill EFI_STATUS 275 1.1 jmcneill (EFIAPI *EFI_SHELL_OPEN_ROOT) ( 276 1.1 jmcneill IN EFI_DEVICE_PATH_PROTOCOL *DevicePath, 277 1.1 jmcneill OUT SHELL_FILE_HANDLE *FileHandle 278 1.1 jmcneill ); 279 1.1 jmcneill 280 1.1 jmcneill typedef 281 1.1 jmcneill EFI_STATUS 282 1.1 jmcneill (EFIAPI *EFI_SHELL_OPEN_ROOT_BY_HANDLE) ( 283 1.1 jmcneill IN EFI_HANDLE DeviceHandle, 284 1.1 jmcneill OUT SHELL_FILE_HANDLE *FileHandle 285 1.1 jmcneill ); 286 1.1 jmcneill 287 1.1 jmcneill typedef 288 1.1 jmcneill EFI_STATUS 289 1.1 jmcneill (EFIAPI *EFI_SHELL_READ_FILE) ( 290 1.1 jmcneill IN SHELL_FILE_HANDLE FileHandle, 291 1.1 jmcneill IN OUT UINTN *ReadSize, 292 1.1 jmcneill IN OUT VOID *Buffer 293 1.1 jmcneill ); 294 1.1 jmcneill 295 1.1 jmcneill typedef 296 1.1 jmcneill EFI_STATUS 297 1.1 jmcneill (EFIAPI *EFI_SHELL_REGISTER_GUID_NAME) ( 298 1.1 jmcneill IN CONST EFI_GUID *Guid, 299 1.1 jmcneill IN CONST CHAR16 *GuidName 300 1.1 jmcneill ); 301 1.1 jmcneill 302 1.1 jmcneill typedef 303 1.1 jmcneill EFI_STATUS 304 1.1 jmcneill (EFIAPI *EFI_SHELL_REMOVE_DUP_IN_FILE_LIST) ( 305 1.1 jmcneill IN EFI_SHELL_FILE_INFO **FileList 306 1.1 jmcneill ); 307 1.1 jmcneill 308 1.1 jmcneill typedef 309 1.1 jmcneill EFI_STATUS 310 1.1 jmcneill (EFIAPI *EFI_SHELL_SET_ALIAS) ( 311 1.1 jmcneill IN CONST CHAR16 *Command, 312 1.1 jmcneill IN CONST CHAR16 *Alias, 313 1.1 jmcneill IN BOOLEAN Replace, 314 1.1 jmcneill IN BOOLEAN Volatile 315 1.1 jmcneill ); 316 1.1 jmcneill 317 1.1 jmcneill typedef 318 1.1 jmcneill EFI_STATUS 319 1.1 jmcneill (EFIAPI *EFI_SHELL_SET_CUR_DIR) ( 320 1.1 jmcneill IN CONST CHAR16 *FileSystem OPTIONAL, 321 1.1 jmcneill IN CONST CHAR16 *Dir 322 1.1 jmcneill ); 323 1.1 jmcneill 324 1.1 jmcneill typedef 325 1.1 jmcneill EFI_STATUS 326 1.1 jmcneill (EFIAPI *EFI_SHELL_SET_ENV) ( 327 1.1 jmcneill IN CONST CHAR16 *Name, 328 1.1 jmcneill IN CONST CHAR16 *Value, 329 1.1 jmcneill IN BOOLEAN Volatile 330 1.1 jmcneill ); 331 1.1 jmcneill 332 1.1 jmcneill typedef 333 1.1 jmcneill EFI_STATUS 334 1.1 jmcneill (EFIAPI *EFI_SHELL_SET_FILE_INFO) ( 335 1.1 jmcneill IN SHELL_FILE_HANDLE FileHandle, 336 1.1 jmcneill IN CONST EFI_FILE_INFO *FileInfo 337 1.1 jmcneill ); 338 1.1 jmcneill 339 1.1 jmcneill typedef 340 1.1 jmcneill EFI_STATUS 341 1.1 jmcneill (EFIAPI *EFI_SHELL_SET_FILE_POSITION) ( 342 1.1 jmcneill IN SHELL_FILE_HANDLE FileHandle, 343 1.1 jmcneill IN UINT64 Position 344 1.1 jmcneill ); 345 1.1 jmcneill 346 1.1 jmcneill typedef 347 1.1 jmcneill EFI_STATUS 348 1.1 jmcneill (EFIAPI *EFI_SHELL_SET_MAP) ( 349 1.1 jmcneill IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, 350 1.1 jmcneill IN CONST CHAR16 *Mapping 351 1.1 jmcneill ); 352 1.1 jmcneill 353 1.1 jmcneill typedef 354 1.1 jmcneill EFI_STATUS 355 1.1 jmcneill (EFIAPI *EFI_SHELL_WRITE_FILE) ( 356 1.1 jmcneill IN SHELL_FILE_HANDLE FileHandle, 357 1.1 jmcneill IN OUT UINTN *BufferSize, 358 1.1 jmcneill IN VOID *Buffer 359 1.1 jmcneill ); 360 1.1 jmcneill 361 1.1 jmcneill typedef struct _EFI_SHELL_PROTOCOL { 362 1.1 jmcneill EFI_SHELL_EXECUTE Execute; 363 1.1 jmcneill EFI_SHELL_GET_ENV GetEnv; 364 1.1 jmcneill EFI_SHELL_SET_ENV SetEnv; 365 1.1 jmcneill EFI_SHELL_GET_ALIAS GetAlias; 366 1.1 jmcneill EFI_SHELL_SET_ALIAS SetAlias; 367 1.1 jmcneill EFI_SHELL_GET_HELP_TEXT GetHelpText; 368 1.1 jmcneill EFI_SHELL_GET_DEVICE_PATH_FROM_MAP GetDevicePathFromMap; 369 1.1 jmcneill EFI_SHELL_GET_MAP_FROM_DEVICE_PATH GetMapFromDevicePath; 370 1.1 jmcneill EFI_SHELL_GET_DEVICE_PATH_FROM_FILE_PATH GetDevicePathFromFilePath; 371 1.1 jmcneill EFI_SHELL_GET_FILE_PATH_FROM_DEVICE_PATH GetFilePathFromDevicePath; 372 1.1 jmcneill EFI_SHELL_SET_MAP SetMap; 373 1.1 jmcneill EFI_SHELL_GET_CUR_DIR GetCurDir; 374 1.1 jmcneill EFI_SHELL_SET_CUR_DIR SetCurDir; 375 1.1 jmcneill EFI_SHELL_OPEN_FILE_LIST OpenFileList; 376 1.1 jmcneill EFI_SHELL_FREE_FILE_LIST FreeFileList; 377 1.1 jmcneill EFI_SHELL_REMOVE_DUP_IN_FILE_LIST RemoveDupInFileList; 378 1.1 jmcneill EFI_SHELL_BATCH_IS_ACTIVE BatchIsActive; 379 1.1 jmcneill EFI_SHELL_IS_ROOT_SHELL IsRootShell; 380 1.1 jmcneill EFI_SHELL_ENABLE_PAGE_BREAK EnablePageBreak; 381 1.1 jmcneill EFI_SHELL_DISABLE_PAGE_BREAK DisablePageBreak; 382 1.1 jmcneill EFI_SHELL_GET_PAGE_BREAK GetPageBreak; 383 1.1 jmcneill EFI_SHELL_GET_DEVICE_NAME GetDeviceName; 384 1.1 jmcneill EFI_SHELL_GET_FILE_INFO GetFileInfo; 385 1.1 jmcneill EFI_SHELL_SET_FILE_INFO SetFileInfo; 386 1.1 jmcneill EFI_SHELL_OPEN_FILE_BY_NAME OpenFileByName; 387 1.1 jmcneill EFI_SHELL_CLOSE_FILE CloseFile; 388 1.1 jmcneill EFI_SHELL_CREATE_FILE CreateFile; 389 1.1 jmcneill EFI_SHELL_READ_FILE ReadFile; 390 1.1 jmcneill EFI_SHELL_WRITE_FILE WriteFile; 391 1.1 jmcneill EFI_SHELL_DELETE_FILE DeleteFile; 392 1.1 jmcneill EFI_SHELL_DELETE_FILE_BY_NAME DeleteFileByName; 393 1.1 jmcneill EFI_SHELL_GET_FILE_POSITION GetFilePosition; 394 1.1 jmcneill EFI_SHELL_SET_FILE_POSITION SetFilePosition; 395 1.1 jmcneill EFI_SHELL_FLUSH_FILE FlushFile; 396 1.1 jmcneill EFI_SHELL_FIND_FILES FindFiles; 397 1.1 jmcneill EFI_SHELL_FIND_FILES_IN_DIR FindFilesInDir; 398 1.1 jmcneill EFI_SHELL_GET_FILE_SIZE GetFileSize; 399 1.1 jmcneill EFI_SHELL_OPEN_ROOT OpenRoot; 400 1.1 jmcneill EFI_SHELL_OPEN_ROOT_BY_HANDLE OpenRootByHandle; 401 1.1 jmcneill EFI_EVENT ExecutionBreak; 402 1.1 jmcneill UINT32 MajorVersion; 403 1.1 jmcneill UINT32 MinorVersion; 404 1.1 jmcneill // Added for Shell 2.1 405 1.1 jmcneill EFI_SHELL_REGISTER_GUID_NAME RegisterGuidName; 406 1.1 jmcneill EFI_SHELL_GET_GUID_NAME GetGuidName; 407 1.1 jmcneill EFI_SHELL_GET_GUID_FROM_NAME GetGuidFromName; 408 1.1 jmcneill EFI_SHELL_GET_ENV_EX GetEnvEx; 409 1.1 jmcneill } EFI_SHELL_PROTOCOL; 410 1.1 jmcneill 411 1.1 jmcneill #define EFI_SHELL_PARAMETERS_PROTOCOL_GUID \ 412 1.1 jmcneill { 0x752f3136, 0x4e16, 0x4fdc, { 0xa2, 0x2a, 0xe5, 0xf4, 0x68, 0x12, 0xf4, 0xca } } 413 1.1 jmcneill 414 1.1 jmcneill INTERFACE_DECL(_EFI_SHELL_PARAMETERS_PROTOCOL); 415 1.1 jmcneill 416 1.1 jmcneill typedef struct _EFI_SHELL_PARAMETERS_PROTOCOL { 417 1.1 jmcneill CHAR16 **Argv; 418 1.1 jmcneill UINTN Argc; 419 1.1 jmcneill SHELL_FILE_HANDLE StdIn; 420 1.1 jmcneill SHELL_FILE_HANDLE StdOut; 421 1.1 jmcneill SHELL_FILE_HANDLE StdErr; 422 1.1 jmcneill } EFI_SHELL_PARAMETERS_PROTOCOL; 423 1.1 jmcneill 424 1.1 jmcneill #define EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL_GUID \ 425 1.1 jmcneill { 0x3c7200e9, 0x005f, 0x4ea4, { 0x87, 0xde, 0xa3, 0xdf, 0xac, 0x8a, 0x27, 0xc3 } } 426 1.1 jmcneill 427 1.1 jmcneill INTERFACE_DECL(_EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL); 428 1.1 jmcneill 429 1.1 jmcneill typedef 430 1.1 jmcneill SHELL_STATUS 431 1.1 jmcneill (EFIAPI *SHELL_COMMAND_HANDLER)( 432 1.1 jmcneill IN struct _EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This, 433 1.1 jmcneill IN EFI_SYSTEM_TABLE *SystemTable, 434 1.1 jmcneill IN EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters, 435 1.1 jmcneill IN EFI_SHELL_PROTOCOL *Shell 436 1.1 jmcneill ); 437 1.1 jmcneill 438 1.1 jmcneill typedef 439 1.1 jmcneill CHAR16* 440 1.1 jmcneill (EFIAPI *SHELL_COMMAND_GETHELP)( 441 1.1 jmcneill IN struct _EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This, 442 1.1 jmcneill IN CONST CHAR8 *Language 443 1.1 jmcneill ); 444 1.1 jmcneill 445 1.1 jmcneill typedef struct _EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL { 446 1.1 jmcneill CONST CHAR16 *CommandName; 447 1.1 jmcneill SHELL_COMMAND_HANDLER Handler; 448 1.1 jmcneill SHELL_COMMAND_GETHELP GetHelp; 449 1.1 jmcneill } EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL; 450 1.1 jmcneill 451 1.1 jmcneill #endif 452