efishell.h revision 1.1 1 1.1 jmcneill /* $NetBSD: efishell.h,v 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