2 This file defines the encoding for the VFR (Visual Form Representation) language.
3 IFR is primarily consumed by the EFI presentation engine, and produced by EFI
4 internal application and drivers as well as all add-in card option-ROM drivers
6 Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
8 This program and the accompanying materials are licensed and made available
9 under the terms and conditions of the BSD License which accompanies this
10 distribution. The full text of the license may be found at:
11 http://opensource.org/licenses/bsd-license.php
13 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
14 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
16 File Name: UefiInternalFormRepresentation.h
18 @par Revision Reference:
19 These definitions are from UEFI2.1.
23 #ifndef __UEFI_INTERNAL_FORMREPRESENTATION_H__
24 #define __UEFI_INTERNAL_FORMREPRESENTATION_H__
27 #define EFI_HII_PLATFORM_SETUP_FORMSET_GUID \
28 { 0x93039971, 0x8545, 0x4b04, { 0xb4, 0x5e, 0x32, 0xeb, 0x83, 0x26, 0x4, 0xe } }
31 // The following types are currently defined:
33 typedef UINT32 RELOFST
;
35 typedef VOID
* EFI_HII_HANDLE
;
36 typedef CHAR16
* EFI_STRING
;
37 typedef UINT16 EFI_IMAGE_ID
;
38 typedef UINT16 EFI_QUESTION_ID
;
39 typedef UINT16 EFI_STRING_ID
;
40 typedef UINT16 EFI_FORM_ID
;
41 typedef UINT16 EFI_VARSTORE_ID
;
42 typedef UINT16 EFI_DEFAULT_ID
;
43 typedef UINT32 EFI_HII_FONT_STYLE
;
54 EFI_GUID PackageListGuid
;
56 } EFI_HII_PACKAGE_LIST_HEADER
;
60 Each package starts with a header, as defined above, which
61 indicates the size and type of the package. When added to a
62 pointer pointing to the start of the header, Length points at
63 the next package. The package lists form a package list when
64 concatenated together and terminated with an
65 EFI_HII_PACKAGE_HEADER with a Type of EFI_HII_PACKAGE_END. The
66 type EFI_HII_PACKAGE_TYPE_GUID is used for vendor-defined HII
67 packages, whose contents are determined by the Guid. The range
68 of package types starting with EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN
69 through EFI_HII_PACKAGE_TYPE_SYSTEM_END are reserved for system
70 firmware implementers.
72 @param Length The size of the package in bytes.
74 @param Type The package type. See EFI_HII_PACKAGE_TYPE_x,
77 @param Data The package data, the format of which is
85 } EFI_HII_PACKAGE_HEADER
;
88 // EFI_HII_PACKAGE_TYPE_x.
90 #define EFI_HII_PACKAGE_TYPE_ALL 0x00
91 #define EFI_HII_PACKAGE_TYPE_GUID 0x01
92 #define EFI_HII_PACKAGE_FORM 0x02
93 #define EFI_HII_PACKAGE_KEYBOARD_LAYOUT 0x03
94 #define EFI_HII_PACKAGE_STRINGS 0x04
95 #define EFI_HII_PACKAGE_FONTS 0x05
96 #define EFI_HII_PACKAGE_IMAGES 0x06
97 #define EFI_HII_PACKAGE_SIMPLE_FONTS 0x07
98 #define EFI_HII_PACKAGE_DEVICE_PATH 0x08
99 #define EFI_HII_PACKAGE_END 0xDF
100 #define EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN 0xE0
101 #define EFI_HII_PACKAGE_TYPE_SYSTEM_END 0xFF
104 // Simplified Font Package
107 #define EFI_GLYPH_HEIGHT 19
108 #define EFI_GLYPH_WIDTH 8
110 // Contents of EFI_NARROW_GLYPH.Attributes
112 #define EFI_GLYPH_NON_SPACING 0x01
113 #define EFI_GLYPH_WIDE 0x02
116 CHAR16 UnicodeWeight
;
118 UINT8 GlyphCol1
[EFI_GLYPH_HEIGHT
];
122 CHAR16 UnicodeWeight
;
124 UINT8 GlyphCol1
[EFI_GLYPH_HEIGHT
];
125 UINT8 GlyphCol2
[EFI_GLYPH_HEIGHT
];
130 typedef struct _EFI_HII_SIMPLE_FONT_PACKAGE_HDR
{
131 EFI_HII_PACKAGE_HEADER Header
;
132 UINT16 NumberOfNarrowGlyphs
;
133 UINT16 NumberOfWideGlyphs
;
134 // EFI_NARROW_GLYPH NarrowGlyphs[];
135 // EFI_WIDE_GLYPH WideGlyphs[];
136 } EFI_HII_SIMPLE_FONT_PACKAGE_HDR
;
142 #define EFI_HII_FONT_STYLE_BOLD 0x00000001
143 #define EFI_HII_FONT_STYLE_ITALIC 0x00000002
144 #define EFI_HII_FONT_STYLE_EMBOSS 0x00010000
145 #define EFI_HII_FONT_STYLE_OUTLINE 0x00020000
146 #define EFI_HII_FONT_STYLE_SHADOW 0x00040000
147 #define EFI_HII_FONT_STYLE_UNDERLINE 0x00080000
148 #define EFI_HII_FONT_STYLE_DBL_UNDER 0x00100000
150 typedef struct _EFI_HII_GLYPH_INFO
{
156 } EFI_HII_GLYPH_INFO
;
158 typedef struct _EFI_HII_FONT_PACKAGE_HDR
{
159 EFI_HII_PACKAGE_HEADER Header
;
161 UINT32 GlyphBlockOffset
;
162 EFI_HII_GLYPH_INFO Cell
;
163 EFI_HII_FONT_STYLE FontStyle
;
164 CHAR16 FontFamily
[1];
165 } EFI_HII_FONT_PACKAGE_HDR
;
167 #define EFI_HII_GIBT_END 0x00
168 #define EFI_HII_GIBT_GLYPH 0x10
169 #define EFI_HII_GIBT_GLYPHS 0x11
170 #define EFI_HII_GIBT_GLYPH_DEFAULT 0x12
171 #define EFI_HII_GIBT_GLYPHS_DEFAULT 0x13
172 #define EFI_HII_GIBT_DUPLICATE 0x20
173 #define EFI_HII_GIBT_SKIP2 0x21
174 #define EFI_HII_GIBT_SKIP1 0x22
175 #define EFI_HII_GIBT_DEFAULTS 0x23
176 #define EFI_HII_GIBT_EXT1 0x30
177 #define EFI_HII_GIBT_EXT2 0x31
178 #define EFI_HII_GIBT_EXT4 0x32
180 typedef struct _EFI_HII_GLYPH_BLOCK
{
182 } EFI_HII_GLYPH_BLOCK
;
184 typedef struct _EFI_HII_GIBT_DEFAULTS_BLOCK
{
185 EFI_HII_GLYPH_BLOCK Header
;
186 EFI_HII_GLYPH_INFO Cell
;
187 } EFI_HII_GIBT_DEFAULTS_BLOCK
;
189 typedef struct _EFI_HII_GIBT_DUPLICATE_BLOCK
{
190 EFI_HII_GLYPH_BLOCK Header
;
192 } EFI_HII_GIBT_DUPLICATE_BLOCK
;
194 typedef struct _EFI_GLYPH_GIBT_END_BLOCK
{
195 EFI_HII_GLYPH_BLOCK Header
;
196 } EFI_GLYPH_GIBT_END_BLOCK
;
198 typedef struct _EFI_HII_GIBT_EXT1_BLOCK
{
199 EFI_HII_GLYPH_BLOCK Header
;
202 } EFI_HII_GIBT_EXT1_BLOCK
;
204 typedef struct _EFI_HII_GIBT_EXT2_BLOCK
{
205 EFI_HII_GLYPH_BLOCK Header
;
208 } EFI_HII_GIBT_EXT2_BLOCK
;
210 typedef struct _EFI_HII_GIBT_EXT4_BLOCK
{
211 EFI_HII_GLYPH_BLOCK Header
;
214 } EFI_HII_GIBT_EXT4_BLOCK
;
216 typedef struct _EFI_HII_GIBT_GLYPH_BLOCK
{
217 EFI_HII_GLYPH_BLOCK Header
;
218 EFI_HII_GLYPH_INFO Cell
;
219 UINT8 BitmapData
[1]; // the number of bytes per bitmap can be calculated by ((Cell.Width+7)/8)*Cell.Height
220 } EFI_HII_GIBT_GLYPH_BLOCK
;
222 typedef struct _EFI_HII_GIBT_GLYPHS_BLOCK
{
223 EFI_HII_GLYPH_BLOCK Header
;
224 EFI_HII_GLYPH_INFO Cell
;
226 UINT8 BitmapData
[1]; // the number of bytes per bitmap can be calculated by ((Cell.Width+7)/8)*Cell.Height
227 } EFI_HII_GIBT_GLYPHS_BLOCK
;
229 typedef struct _EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK
{
230 EFI_HII_GLYPH_BLOCK Header
;
231 UINT8 BitmapData
[1]; // the number of bytes per bitmap can be calculated by ((Global.Cell.Width+7)/8)*Global.Cell.Height
232 } EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK
;
234 typedef struct _EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK
{
235 EFI_HII_GLYPH_BLOCK Header
;
237 UINT8 BitmapData
[1]; // the number of bytes per bitmap can be calculated by ((Global.Cell.Width+7)/8)*Global.Cell.Height
238 } EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK
;
240 typedef struct _EFI_HII_GIBT_SKIP1_BLOCK
{
241 EFI_HII_GLYPH_BLOCK Header
;
243 } EFI_HII_GIBT_SKIP1_BLOCK
;
245 typedef struct _EFI_HII_GIBT_SKIP2_BLOCK
{
246 EFI_HII_GLYPH_BLOCK Header
;
248 } EFI_HII_GIBT_SKIP2_BLOCK
;
251 // Device Path Package
253 typedef struct _EFI_HII_DEVICE_PATH_PACKAGE
{
254 EFI_HII_PACKAGE_HEADER Header
;
255 // EFI_DEVICE_PATH_PROTOCOL DevicePath[];
256 } EFI_HII_DEVICE_PATH_PACKAGE
;
261 typedef struct _EFI_HII_GUID_PACKAGE_HDR
{
262 EFI_HII_PACKAGE_HEADER Header
;
264 // Data per GUID definition may follow
265 } EFI_HII_GUID_PACKAGE_HDR
;
271 #define UEFI_CONFIG_LANG "x-UEFI"
272 #define UEFI_CONFIG_LANG2 "x-i-UEFI"
274 typedef struct _EFI_HII_STRING_PACKAGE_HDR
{
275 EFI_HII_PACKAGE_HEADER Header
;
277 UINT32 StringInfoOffset
;
278 CHAR16 LanguageWindow
[16];
279 EFI_STRING_ID LanguageName
;
281 } EFI_HII_STRING_PACKAGE_HDR
;
285 } EFI_HII_STRING_BLOCK
;
287 #define EFI_HII_SIBT_END 0x00
288 #define EFI_HII_SIBT_STRING_SCSU 0x10
289 #define EFI_HII_SIBT_STRING_SCSU_FONT 0x11
290 #define EFI_HII_SIBT_STRINGS_SCSU 0x12
291 #define EFI_HII_SIBT_STRINGS_SCSU_FONT 0x13
292 #define EFI_HII_SIBT_STRING_UCS2 0x14
293 #define EFI_HII_SIBT_STRING_UCS2_FONT 0x15
294 #define EFI_HII_SIBT_STRINGS_UCS2 0x16
295 #define EFI_HII_SIBT_STRINGS_UCS2_FONT 0x17
296 #define EFI_HII_SIBT_DUPLICATE 0x20
297 #define EFI_HII_SIBT_SKIP2 0x21
298 #define EFI_HII_SIBT_SKIP1 0x22
299 #define EFI_HII_SIBT_EXT1 0x30
300 #define EFI_HII_SIBT_EXT2 0x31
301 #define EFI_HII_SIBT_EXT4 0x32
302 #define EFI_HII_SIBT_FONT 0x40
304 typedef struct _EFI_HII_SIBT_DUPLICATE_BLOCK
{
305 EFI_HII_STRING_BLOCK Header
;
306 EFI_STRING_ID StringId
;
307 } EFI_HII_SIBT_DUPLICATE_BLOCK
;
309 typedef struct _EFI_HII_SIBT_END_BLOCK
{
310 EFI_HII_STRING_BLOCK Header
;
311 } EFI_HII_SIBT_END_BLOCK
;
313 typedef struct _EFI_HII_SIBT_EXT1_BLOCK
{
314 EFI_HII_STRING_BLOCK Header
;
317 } EFI_HII_SIBT_EXT1_BLOCK
;
319 typedef struct _EFI_HII_SIBT_EXT2_BLOCK
{
320 EFI_HII_STRING_BLOCK Header
;
323 } EFI_HII_SIBT_EXT2_BLOCK
;
325 typedef struct _EFI_HII_SIBT_EXT4_BLOCK
{
326 EFI_HII_STRING_BLOCK Header
;
329 } EFI_HII_SIBT_EXT4_BLOCK
;
331 typedef struct _EFI_HII_SIBT_FONT_BLOCK
{
332 EFI_HII_SIBT_EXT2_BLOCK Header
;
335 EFI_HII_FONT_STYLE FontStyle
;
337 } EFI_HII_SIBT_FONT_BLOCK
;
339 typedef struct _EFI_HII_SIBT_SKIP1_BLOCK
{
340 EFI_HII_STRING_BLOCK Header
;
342 } EFI_HII_SIBT_SKIP1_BLOCK
;
344 typedef struct _EFI_HII_SIBT_SKIP2_BLOCK
{
345 EFI_HII_STRING_BLOCK Header
;
347 } EFI_HII_SIBT_SKIP2_BLOCK
;
349 typedef struct _EFI_HII_SIBT_STRING_SCSU_BLOCK
{
350 EFI_HII_STRING_BLOCK Header
;
352 } EFI_HII_SIBT_STRING_SCSU_BLOCK
;
354 typedef struct _EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK
{
355 EFI_HII_STRING_BLOCK Header
;
356 UINT8 FontIdentifier
;
358 } EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK
;
360 typedef struct _EFI_HII_SIBT_STRINGS_SCSU_BLOCK
{
361 EFI_HII_STRING_BLOCK Header
;
364 } EFI_HII_SIBT_STRINGS_SCSU_BLOCK
;
366 typedef struct _EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK
{
367 EFI_HII_STRING_BLOCK Header
;
368 UINT8 FontIdentifier
;
371 } EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK
;
373 typedef struct _EFI_HII_SIBT_STRING_UCS2_BLOCK
{
374 EFI_HII_STRING_BLOCK Header
;
375 CHAR16 StringText
[1];
376 } EFI_HII_SIBT_STRING_UCS2_BLOCK
;
378 typedef struct _EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK
{
379 EFI_HII_STRING_BLOCK Header
;
380 UINT8 FontIdentifier
;
381 CHAR16 StringText
[1];
382 } EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK
;
384 typedef struct _EFI_HII_SIBT_STRINGS_UCS2_BLOCK
{
385 EFI_HII_STRING_BLOCK Header
;
387 CHAR16 StringText
[1];
388 } EFI_HII_SIBT_STRINGS_UCS2_BLOCK
;
390 typedef struct _EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK
{
391 EFI_HII_STRING_BLOCK Header
;
392 UINT8 FontIdentifier
;
394 CHAR16 StringText
[1];
395 } EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK
;
401 typedef struct _EFI_HII_IMAGE_PACKAGE_HDR
{
402 EFI_HII_PACKAGE_HEADER Header
;
403 UINT32 ImageInfoOffset
;
404 UINT32 PaletteInfoOffset
;
405 } EFI_HII_IMAGE_PACKAGE_HDR
;
407 typedef struct _EFI_HII_IMAGE_BLOCK
{
409 } EFI_HII_IMAGE_BLOCK
;
411 #define EFI_HII_IIBT_END 0x00
412 #define EFI_HII_IIBT_IMAGE_1BIT 0x10
413 #define EFI_HII_IIBT_IMAGE_1BIT_TRANS 0x11
414 #define EFI_HII_IIBT_IMAGE_4BIT 0x12
415 #define EFI_HII_IIBT_IMAGE_4BIT_TRANS 0x13
416 #define EFI_HII_IIBT_IMAGE_8BIT 0x14
417 #define EFI_HII_IIBT_IMAGE_8BIT_TRANS 0x15
418 #define EFI_HII_IIBT_IMAGE_24BIT 0x16
419 #define EFI_HII_IIBT_IMAGE_24BIT_TRANS 0x17
420 #define EFI_HII_IIBT_IMAGE_JPEG 0x18
421 #define EFI_HII_IIBT_DUPLICATE 0x20
422 #define EFI_HII_IIBT_SKIP2 0x21
423 #define EFI_HII_IIBT_SKIP1 0x22
424 #define EFI_HII_IIBT_EXT1 0x30
425 #define EFI_HII_IIBT_EXT2 0x31
426 #define EFI_HII_IIBT_EXT4 0x32
428 typedef struct _EFI_HII_IIBT_END_BLOCK
{
429 EFI_HII_IMAGE_BLOCK Header
;
430 } EFI_HII_IIBT_END_BLOCK
;
432 typedef struct _EFI_HII_IIBT_EXT1_BLOCK
{
433 EFI_HII_IMAGE_BLOCK Header
;
436 } EFI_HII_IIBT_EXT1_BLOCK
;
438 typedef struct _EFI_HII_IIBT_EXT2_BLOCK
{
439 EFI_HII_IMAGE_BLOCK Header
;
442 } EFI_HII_IIBT_EXT2_BLOCK
;
444 typedef struct _EFI_HII_IIBT_EXT4_BLOCK
{
445 EFI_HII_IMAGE_BLOCK Header
;
448 } EFI_HII_IIBT_EXT4_BLOCK
;
450 typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BASE
{
454 } EFI_HII_IIBT_IMAGE_1BIT_BASE
;
456 typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BLOCK
{
457 EFI_HII_IMAGE_BLOCK Header
;
459 EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap
;
460 } EFI_HII_IIBT_IMAGE_1BIT_BLOCK
;
462 typedef struct _EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK
{
463 EFI_HII_IMAGE_BLOCK Header
;
465 EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap
;
466 } EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK
;
468 typedef struct _EFI_HII_RGB_PIXEL
{
474 typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BASE
{
477 EFI_HII_RGB_PIXEL Bitmap
[1];
478 } EFI_HII_IIBT_IMAGE_24BIT_BASE
;
480 typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BLOCK
{
481 EFI_HII_IMAGE_BLOCK Header
;
482 EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap
;
483 } EFI_HII_IIBT_IMAGE_24BIT_BLOCK
;
485 typedef struct _EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK
{
486 EFI_HII_IMAGE_BLOCK Header
;
487 EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap
;
488 } EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK
;
490 typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BASE
{
494 } EFI_HII_IIBT_IMAGE_4BIT_BASE
;
496 typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BLOCK
{
497 EFI_HII_IMAGE_BLOCK Header
;
499 EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap
;
500 } EFI_HII_IIBT_IMAGE_4BIT_BLOCK
;
502 typedef struct _EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK
{
503 EFI_HII_IMAGE_BLOCK Header
;
505 EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap
;
506 } EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK
;
508 typedef struct _EFI_HII_IIBT_IMAGE_8BIT_BASE
{
512 } EFI_HII_IIBT_IMAGE_8BIT_BASE
;
514 typedef struct _EFI_HII_IIBT_IMAGE_8BIT_PALETTE_BLOCK
{
515 EFI_HII_IMAGE_BLOCK Header
;
517 EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap
;
518 } EFI_HII_IIBT_IMAGE_8BIT_BLOCK
;
520 typedef struct _EFI_HII_IIBT_IMAGE_8BIT_TRANS_BLOCK
{
521 EFI_HII_IMAGE_BLOCK Header
;
523 EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap
;
524 } EFI_HII_IIBT_IMAGE_8BIT_TRAN_BLOCK
;
526 typedef struct _EFI_HII_IIBT_DUPLICATE_BLOCK
{
527 EFI_HII_IMAGE_BLOCK Header
;
528 EFI_IMAGE_ID ImageId
;
529 } EFI_HII_IIBT_DUPLICATE_BLOCK
;
531 typedef struct _EFI_HII_IIBT_JPEG_BLOCK
{
532 EFI_HII_IMAGE_BLOCK Header
;
535 } EFI_HII_IIBT_JPEG_BLOCK
;
537 typedef struct _EFI_HII_IIBT_SKIP1_BLOCK
{
538 EFI_HII_IMAGE_BLOCK Header
;
540 } EFI_HII_IIBT_SKIP1_BLOCK
;
542 typedef struct _EFI_HII_IIBT_SKIP2_BLOCK
{
543 EFI_HII_IMAGE_BLOCK Header
;
545 } EFI_HII_IIBT_SKIP2_BLOCK
;
547 typedef struct _EFI_HII_IMAGE_PALETTE_INFO_HEADER
{
549 } EFI_HII_IMAGE_PALETTE_INFO_HEADER
;
551 typedef struct _EFI_HII_IMAGE_PALETTE_INFO
{
553 EFI_HII_RGB_PIXEL PaletteValue
[1];
554 } EFI_HII_IMAGE_PALETTE_INFO
;
560 typedef struct _EFI_HII_FORM_PACKAGE
{
561 EFI_HII_PACKAGE_HEADER Header
;
562 // EFI_IFR_OP_HEADER OpCodeHeader;
563 // More op-codes follow
564 } EFI_HII_FORM_PACKAGE
;
579 EFI_QUESTION_ID QuestionId
;
581 EFI_GUID FormSetGuid
;
582 EFI_STRING_ID DevicePath
;
593 EFI_STRING_ID string
;
595 } EFI_IFR_TYPE_VALUE
;
597 #define EFI_IFR_FORM_OP 0x01
598 #define EFI_IFR_SUBTITLE_OP 0x02
599 #define EFI_IFR_TEXT_OP 0x03
600 #define EFI_IFR_IMAGE_OP 0x04
601 #define EFI_IFR_ONE_OF_OP 0x05
602 #define EFI_IFR_CHECKBOX_OP 0x06
603 #define EFI_IFR_NUMERIC_OP 0x07
604 #define EFI_IFR_PASSWORD_OP 0x08
605 #define EFI_IFR_ONE_OF_OPTION_OP 0x09
606 #define EFI_IFR_SUPPRESS_IF_OP 0x0A
607 #define EFI_IFR_LOCKED_OP 0x0B
608 #define EFI_IFR_ACTION_OP 0x0C
609 #define EFI_IFR_RESET_BUTTON_OP 0x0D
610 #define EFI_IFR_FORM_SET_OP 0x0E
611 #define EFI_IFR_REF_OP 0x0F
612 #define EFI_IFR_NO_SUBMIT_IF_OP 0x10
613 #define EFI_IFR_INCONSISTENT_IF_OP 0x11
614 #define EFI_IFR_EQ_ID_VAL_OP 0x12
615 #define EFI_IFR_EQ_ID_ID_OP 0x13
616 #define EFI_IFR_EQ_ID_VAL_LIST_OP 0x14
617 #define EFI_IFR_AND_OP 0x15
618 #define EFI_IFR_OR_OP 0x16
619 #define EFI_IFR_NOT_OP 0x17
620 #define EFI_IFR_RULE_OP 0x18
621 #define EFI_IFR_GRAY_OUT_IF_OP 0x19
622 #define EFI_IFR_DATE_OP 0x1A
623 #define EFI_IFR_TIME_OP 0x1B
624 #define EFI_IFR_STRING_OP 0x1C
625 #define EFI_IFR_REFRESH_OP 0x1D
626 #define EFI_IFR_DISABLE_IF_OP 0x1E
627 #define EFI_IFR_TO_LOWER_OP 0x20
628 #define EFI_IFR_TO_UPPER_OP 0x21
629 #define EFI_IFR_MAP_OP 0x22
630 #define EFI_IFR_ORDERED_LIST_OP 0x23
631 #define EFI_IFR_VARSTORE_OP 0x24
632 #define EFI_IFR_VARSTORE_NAME_VALUE_OP 0x25
633 #define EFI_IFR_VARSTORE_EFI_OP 0x26
634 #define EFI_IFR_VARSTORE_DEVICE_OP 0x27
635 #define EFI_IFR_VERSION_OP 0x28
636 #define EFI_IFR_END_OP 0x29
637 #define EFI_IFR_MATCH_OP 0x2A
638 #define EFI_IFR_GET_OP 0x2B
639 #define EFI_IFR_SET_OP 0x2C
640 #define EFI_IFR_READ_OP 0x2D
641 #define EFI_IFR_WRITE_OP 0x2E
642 #define EFI_IFR_EQUAL_OP 0x2F
643 #define EFI_IFR_NOT_EQUAL_OP 0x30
644 #define EFI_IFR_GREATER_THAN_OP 0x31
645 #define EFI_IFR_GREATER_EQUAL_OP 0x32
646 #define EFI_IFR_LESS_THAN_OP 0x33
647 #define EFI_IFR_LESS_EQUAL_OP 0x34
648 #define EFI_IFR_BITWISE_AND_OP 0x35
649 #define EFI_IFR_BITWISE_OR_OP 0x36
650 #define EFI_IFR_BITWISE_NOT_OP 0x37
651 #define EFI_IFR_SHIFT_LEFT_OP 0x38
652 #define EFI_IFR_SHIFT_RIGHT_OP 0x39
653 #define EFI_IFR_ADD_OP 0x3A
654 #define EFI_IFR_SUBTRACT_OP 0x3B
655 #define EFI_IFR_MULTIPLY_OP 0x3C
656 #define EFI_IFR_DIVIDE_OP 0x3D
657 #define EFI_IFR_MODULO_OP 0x3E
658 #define EFI_IFR_RULE_REF_OP 0x3F
659 #define EFI_IFR_QUESTION_REF1_OP 0x40
660 #define EFI_IFR_QUESTION_REF2_OP 0x41
661 #define EFI_IFR_UINT8_OP 0x42
662 #define EFI_IFR_UINT16_OP 0x43
663 #define EFI_IFR_UINT32_OP 0x44
664 #define EFI_IFR_UINT64_OP 0x45
665 #define EFI_IFR_TRUE_OP 0x46
666 #define EFI_IFR_FALSE_OP 0x47
667 #define EFI_IFR_TO_UINT_OP 0x48
668 #define EFI_IFR_TO_STRING_OP 0x49
669 #define EFI_IFR_TO_BOOLEAN_OP 0x4A
670 #define EFI_IFR_MID_OP 0x4B
671 #define EFI_IFR_FIND_OP 0x4C
672 #define EFI_IFR_TOKEN_OP 0x4D
673 #define EFI_IFR_STRING_REF1_OP 0x4E
674 #define EFI_IFR_STRING_REF2_OP 0x4F
675 #define EFI_IFR_CONDITIONAL_OP 0x50
676 #define EFI_IFR_QUESTION_REF3_OP 0x51
677 #define EFI_IFR_ZERO_OP 0x52
678 #define EFI_IFR_ONE_OP 0x53
679 #define EFI_IFR_ONES_OP 0x54
680 #define EFI_IFR_UNDEFINED_OP 0x55
681 #define EFI_IFR_LENGTH_OP 0x56
682 #define EFI_IFR_DUP_OP 0x57
683 #define EFI_IFR_THIS_OP 0x58
684 #define EFI_IFR_SPAN_OP 0x59
685 #define EFI_IFR_VALUE_OP 0x5A
686 #define EFI_IFR_DEFAULT_OP 0x5B
687 #define EFI_IFR_DEFAULTSTORE_OP 0x5C
688 #define EFI_IFR_FORM_MAP_OP 0x5D
689 #define EFI_IFR_CATENATE_OP 0x5E
690 #define EFI_IFR_GUID_OP 0x5F
691 #define EFI_IFR_SECURITY_OP 0x60
692 #define EFI_IFR_MODAL_TAG_OP 0x61
693 #define EFI_IFR_REFRESH_ID_OP 0x62
694 #define EFI_IFR_WARNING_IF_OP 0x63
697 typedef struct _EFI_IFR_OP_HEADER
{
703 typedef struct _EFI_IFR_STATEMENT_HEADER
{
704 EFI_STRING_ID Prompt
;
706 } EFI_IFR_STATEMENT_HEADER
;
708 typedef struct _EFI_IFR_QUESTION_HEADER
{
709 EFI_IFR_STATEMENT_HEADER Header
;
710 EFI_QUESTION_ID QuestionId
;
711 EFI_VARSTORE_ID VarStoreId
;
713 EFI_STRING_ID VarName
;
717 } EFI_IFR_QUESTION_HEADER
;
719 #define EFI_IFR_FLAG_READ_ONLY 0x01
720 #define EFI_IFR_FLAG_CALLBACK 0x04
721 #define EFI_IFR_FLAG_RESET_REQUIRED 0x10
722 #define EFI_IFR_FLAG_OPTIONS_ONLY 0x80
724 typedef struct _EFI_IFR_DEFAULTSTORE
{
725 EFI_IFR_OP_HEADER Header
;
726 EFI_STRING_ID DefaultName
;
728 } EFI_IFR_DEFAULTSTORE
;
730 #define EFI_HII_DEFAULT_CLASS_STANDARD 0x0000
731 #define EFI_HII_DEFAULT_CLASS_MANUFACTURING 0x0001
732 #define EFI_HII_DEFAULT_CLASS_SAFE 0x0002
733 #define EFI_HII_DEFAULT_CLASS_PLATFORM_BEGIN 0x4000
734 #define EFI_HII_DEFAULT_CLASS_PLATFORM_END 0x7fff
735 #define EFI_HII_DEFAULT_CLASS_HARDWARE_BEGIN 0x8000
736 #define EFI_HII_DEFAULT_CLASS_HARDWARE_END 0xbfff
737 #define EFI_HII_DEFAULT_CLASS_FIRMWARE_BEGIN 0xc000
738 #define EFI_HII_DEFAULT_CLASS_FIRMWARE_END 0xffff
740 typedef struct _EFI_IFR_VARSTORE
{
741 EFI_IFR_OP_HEADER Header
;
743 EFI_VARSTORE_ID VarStoreId
;
748 typedef struct _EFI_IFR_VARSTORE_EFI
{
749 EFI_IFR_OP_HEADER Header
;
750 EFI_VARSTORE_ID VarStoreId
;
755 } EFI_IFR_VARSTORE_EFI
;
757 typedef struct _EFI_IFR_VARSTORE_NAME_VALUE
{
758 EFI_IFR_OP_HEADER Header
;
759 EFI_VARSTORE_ID VarStoreId
;
761 } EFI_IFR_VARSTORE_NAME_VALUE
;
763 typedef struct _EFI_IFR_FORM_SET
{
764 EFI_IFR_OP_HEADER Header
;
766 EFI_STRING_ID FormSetTitle
;
769 // EFI_GUID ClassGuid[];
772 typedef struct _EFI_IFR_END
{
773 EFI_IFR_OP_HEADER Header
;
776 typedef struct _EFI_IFR_FORM
{
777 EFI_IFR_OP_HEADER Header
;
779 EFI_STRING_ID FormTitle
;
782 typedef struct _EFI_IFR_IMAGE
{
783 EFI_IFR_OP_HEADER Header
;
787 typedef struct _EFI_IFR_MODAL_TAG
{
788 EFI_IFR_OP_HEADER Header
;
791 typedef struct _EFI_IFR_LOCKED
{
792 EFI_IFR_OP_HEADER Header
;
795 typedef struct _EFI_IFR_RULE
{
796 EFI_IFR_OP_HEADER Header
;
800 typedef struct _EFI_IFR_DEFAULT
{
801 EFI_IFR_OP_HEADER Header
;
804 EFI_IFR_TYPE_VALUE Value
;
807 typedef struct _EFI_IFR_DEFAULT_2
{
808 EFI_IFR_OP_HEADER Header
;
813 typedef struct _EFI_IFR_VALUE
{
814 EFI_IFR_OP_HEADER Header
;
817 typedef struct _EFI_IFR_SUBTITLE
{
818 EFI_IFR_OP_HEADER Header
;
819 EFI_IFR_STATEMENT_HEADER Statement
;
823 #define EFI_IFR_FLAGS_HORIZONTAL 0x01
825 typedef struct _EFI_IFR_CHECKBOX
{
826 EFI_IFR_OP_HEADER Header
;
827 EFI_IFR_QUESTION_HEADER Question
;
831 #define EFI_IFR_CHECKBOX_DEFAULT 0x01
832 #define EFI_IFR_CHECKBOX_DEFAULT_MFG 0x02
834 typedef struct _EFI_IFR_TEXT
{
835 EFI_IFR_OP_HEADER Header
;
836 EFI_IFR_STATEMENT_HEADER Statement
;
837 EFI_STRING_ID TextTwo
;
840 typedef struct _EFI_IFR_REF
{
841 EFI_IFR_OP_HEADER Header
;
842 EFI_IFR_QUESTION_HEADER Question
;
846 typedef struct _EFI_IFR_REF2
{
847 EFI_IFR_OP_HEADER Header
;
848 EFI_IFR_QUESTION_HEADER Question
;
850 EFI_QUESTION_ID QuestionId
;
853 typedef struct _EFI_IFR_REF3
{
854 EFI_IFR_OP_HEADER Header
;
855 EFI_IFR_QUESTION_HEADER Question
;
857 EFI_QUESTION_ID QuestionId
;
861 typedef struct _EFI_IFR_REF4
{
862 EFI_IFR_OP_HEADER Header
;
863 EFI_IFR_QUESTION_HEADER Question
;
865 EFI_QUESTION_ID QuestionId
;
867 EFI_STRING_ID DevicePath
;
870 typedef struct _EFI_IFR_REF5
{
871 EFI_IFR_OP_HEADER Header
;
872 EFI_IFR_QUESTION_HEADER Question
;
875 typedef struct _EFI_IFR_RESET_BUTTON
{
876 EFI_IFR_OP_HEADER Header
;
877 EFI_IFR_STATEMENT_HEADER Statement
;
878 EFI_DEFAULT_ID DefaultId
;
879 } EFI_IFR_RESET_BUTTON
;
881 typedef struct _EFI_IFR_ACTION
{
882 EFI_IFR_OP_HEADER Header
;
883 EFI_IFR_QUESTION_HEADER Question
;
884 EFI_STRING_ID QuestionConfig
;
887 typedef struct _EFI_IFR_ACTION_1
{
888 EFI_IFR_OP_HEADER Header
;
889 EFI_IFR_QUESTION_HEADER Question
;
892 typedef struct _EFI_IFR_DATE
{
893 EFI_IFR_OP_HEADER Header
;
894 EFI_IFR_QUESTION_HEADER Question
;
898 #define EFI_QF_DATE_YEAR_SUPPRESS 0x01
899 #define EFI_QF_DATE_MONTH_SUPPRESS 0x02
900 #define EFI_QF_DATE_DAY_SUPPRESS 0x04
902 #define EFI_QF_DATE_STORAGE 0x30
903 #define QF_DATE_STORAGE_NORMAL 0x00
904 #define QF_DATE_STORAGE_TIME 0x10
905 #define QF_DATE_STORAGE_WAKEUP 0x20
930 typedef struct _EFI_IFR_NUMERIC
{
931 EFI_IFR_OP_HEADER Header
;
932 EFI_IFR_QUESTION_HEADER Question
;
934 MINMAXSTEP_DATA data
;
937 #define EFI_IFR_NUMERIC_SIZE 0x03
938 #define EFI_IFR_NUMERIC_SIZE_1 0x00
939 #define EFI_IFR_NUMERIC_SIZE_2 0x01
940 #define EFI_IFR_NUMERIC_SIZE_4 0x02
941 #define EFI_IFR_NUMERIC_SIZE_8 0x03
943 #define EFI_IFR_DISPLAY 0x30
944 #define EFI_IFR_DISPLAY_INT_DEC 0x00
945 #define EFI_IFR_DISPLAY_UINT_DEC 0x10
946 #define EFI_IFR_DISPLAY_UINT_HEX 0x20
948 typedef struct _EFI_IFR_ONE_OF
{
949 EFI_IFR_OP_HEADER Header
;
950 EFI_IFR_QUESTION_HEADER Question
;
952 MINMAXSTEP_DATA data
;
955 typedef struct _EFI_IFR_STRING
{
956 EFI_IFR_OP_HEADER Header
;
957 EFI_IFR_QUESTION_HEADER Question
;
963 #define EFI_IFR_STRING_MULTI_LINE 0x01
965 typedef struct _EFI_IFR_PASSWORD
{
966 EFI_IFR_OP_HEADER Header
;
967 EFI_IFR_QUESTION_HEADER Question
;
972 typedef struct _EFI_IFR_ORDERED_LIST
{
973 EFI_IFR_OP_HEADER Header
;
974 EFI_IFR_QUESTION_HEADER Question
;
977 } EFI_IFR_ORDERED_LIST
;
979 #define EFI_IFR_UNIQUE_SET 0x01
980 #define EFI_IFR_NO_EMPTY_SET 0x02
982 typedef struct _EFI_IFR_TIME
{
983 EFI_IFR_OP_HEADER Header
;
984 EFI_IFR_QUESTION_HEADER Question
;
988 #define QF_TIME_HOUR_SUPPRESS 0x01
989 #define QF_TIME_MINUTE_SUPPRESS 0x02
990 #define QF_TIME_SECOND_SUPPRESS 0x04
992 #define QF_TIME_STORAGE 0x30
993 #define QF_TIME_STORAGE_NORMAL 0x00
994 #define QF_TIME_STORAGE_TIME 0x10
995 #define QF_TIME_STORAGE_WAKEUP 0x20
997 typedef struct _EFI_IFR_DISABLE_IF
{
998 EFI_IFR_OP_HEADER Header
;
999 } EFI_IFR_DISABLE_IF
;
1001 typedef struct _EFI_IFR_SUPPRESS_IF
{
1002 EFI_IFR_OP_HEADER Header
;
1003 } EFI_IFR_SUPPRESS_IF
;
1005 typedef struct _EFI_IFR_GRAY_OUT_IF
{
1006 EFI_IFR_OP_HEADER Header
;
1007 } EFI_IFR_GRAY_OUT_IF
;
1009 typedef struct _EFI_IFR_INCONSISTENT_IF
{
1010 EFI_IFR_OP_HEADER Header
;
1011 EFI_STRING_ID Error
;
1012 } EFI_IFR_INCONSISTENT_IF
;
1014 typedef struct _EFI_IFR_NO_SUBMIT_IF
{
1015 EFI_IFR_OP_HEADER Header
;
1016 EFI_STRING_ID Error
;
1017 } EFI_IFR_NO_SUBMIT_IF
;
1019 typedef struct _EFI_IFR_WARNING_IF
{
1020 EFI_IFR_OP_HEADER Header
;
1021 EFI_STRING_ID Warning
;
1023 } EFI_IFR_WARNING_IF
;
1025 typedef struct _EFI_IFR_REFRESH
{
1026 EFI_IFR_OP_HEADER Header
;
1027 UINT8 RefreshInterval
;
1030 typedef struct _EFI_IFR_REFRESH_ID
{
1031 EFI_IFR_OP_HEADER Header
;
1032 EFI_GUID RefreshEventGroupId
;
1033 } EFI_IFR_REFRESH_ID
;
1035 typedef struct _EFI_IFR_VARSTORE_DEVICE
{
1036 EFI_IFR_OP_HEADER Header
;
1037 EFI_STRING_ID DevicePath
;
1038 } EFI_IFR_VARSTORE_DEVICE
;
1040 typedef struct _EFI_IFR_ONE_OF_OPTION
{
1041 EFI_IFR_OP_HEADER Header
;
1042 EFI_STRING_ID Option
;
1045 EFI_IFR_TYPE_VALUE Value
;
1046 } EFI_IFR_ONE_OF_OPTION
;
1048 #define EFI_IFR_TYPE_NUM_SIZE_8 0x00
1049 #define EFI_IFR_TYPE_NUM_SIZE_16 0x01
1050 #define EFI_IFR_TYPE_NUM_SIZE_32 0x02
1051 #define EFI_IFR_TYPE_NUM_SIZE_64 0x03
1052 #define EFI_IFR_TYPE_BOOLEAN 0x04
1053 #define EFI_IFR_TYPE_TIME 0x05
1054 #define EFI_IFR_TYPE_DATE 0x06
1055 #define EFI_IFR_TYPE_STRING 0x07
1056 #define EFI_IFR_TYPE_OTHER 0x08
1057 #define EFI_IFR_TYPE_UNDEFINED 0x09
1058 #define EFI_IFR_TYPE_ACTION 0x0A
1059 #define EFI_IFR_TYPE_BUFFER 0x0B
1060 #define EFI_IFR_TYPE_REF 0x0C
1062 #define EFI_IFR_OPTION_DEFAULT 0x10
1063 #define EFI_IFR_OPTION_DEFAULT_MFG 0x20
1065 typedef struct _EFI_IFR_GUID
{
1066 EFI_IFR_OP_HEADER Header
;
1068 //Optional Data Follows
1071 typedef struct _EFI_IFR_DUP
{
1072 EFI_IFR_OP_HEADER Header
;
1075 typedef struct _EFI_IFR_EQ_ID_ID
{
1076 EFI_IFR_OP_HEADER Header
;
1077 EFI_QUESTION_ID QuestionId1
;
1078 EFI_QUESTION_ID QuestionId2
;
1081 typedef struct _EFI_IFR_EQ_ID_VAL
{
1082 EFI_IFR_OP_HEADER Header
;
1083 EFI_QUESTION_ID QuestionId
;
1085 } EFI_IFR_EQ_ID_VAL
;
1087 typedef struct _EFI_IFR_EQ_ID_VAL_LIST
{
1088 EFI_IFR_OP_HEADER Header
;
1089 EFI_QUESTION_ID QuestionId
;
1091 UINT16 ValueList
[1];
1092 } EFI_IFR_EQ_ID_VAL_LIST
;
1094 typedef struct _EFI_IFR_QUESTION_REF1
{
1095 EFI_IFR_OP_HEADER Header
;
1096 EFI_QUESTION_ID QuestionId
;
1097 } EFI_IFR_QUESTION_REF1
;
1099 typedef struct _EFI_IFR_UINT8
{
1100 EFI_IFR_OP_HEADER Header
;
1104 typedef struct _EFI_IFR_UINT16
{
1105 EFI_IFR_OP_HEADER Header
;
1109 typedef struct _EFI_IFR_QUESTION_REF2
{
1110 EFI_IFR_OP_HEADER Header
;
1111 } EFI_IFR_QUESTION_REF2
;
1113 typedef struct _EFI_IFR_UINT32
{
1114 EFI_IFR_OP_HEADER Header
;
1118 typedef struct _EFI_IFR_UINT64
{
1119 EFI_IFR_OP_HEADER Header
;
1123 typedef struct _EFI_IFR_QUESTION_REF3
{
1124 EFI_IFR_OP_HEADER Header
;
1125 } EFI_IFR_QUESTION_REF3
;
1127 typedef struct _EFI_IFR_QUESTION_REF3_2
{
1128 EFI_IFR_OP_HEADER Header
;
1129 EFI_STRING_ID DevicePath
;
1130 } EFI_IFR_QUESTION_REF3_2
;
1132 typedef struct _EFI_IFR_QUESTION_REF3_3
{
1133 EFI_IFR_OP_HEADER Header
;
1134 EFI_STRING_ID DevicePath
;
1136 } EFI_IFR_QUESTION_REF3_3
;
1138 typedef struct _EFI_IFR_RULE_REF
{
1139 EFI_IFR_OP_HEADER Header
;
1143 typedef struct _EFI_IFR_STRING_REF1
{
1144 EFI_IFR_OP_HEADER Header
;
1145 EFI_STRING_ID StringId
;
1146 } EFI_IFR_STRING_REF1
;
1148 typedef struct _EFI_IFR_STRING_REF2
{
1149 EFI_IFR_OP_HEADER Header
;
1150 } EFI_IFR_STRING_REF2
;
1152 typedef struct _EFI_IFR_THIS
{
1153 EFI_IFR_OP_HEADER Header
;
1156 typedef struct _EFI_IFR_TRUE
{
1157 EFI_IFR_OP_HEADER Header
;
1160 typedef struct _EFI_IFR_FALSE
{
1161 EFI_IFR_OP_HEADER Header
;
1164 typedef struct _EFI_IFR_ONE
{
1165 EFI_IFR_OP_HEADER Header
;
1168 typedef struct _EFI_IFR_ONES
{
1169 EFI_IFR_OP_HEADER Header
;
1172 typedef struct _EFI_IFR_ZERO
{
1173 EFI_IFR_OP_HEADER Header
;
1176 typedef struct _EFI_IFR_UNDEFINED
{
1177 EFI_IFR_OP_HEADER Header
;
1178 } EFI_IFR_UNDEFINED
;
1180 typedef struct _EFI_IFR_VERSION
{
1181 EFI_IFR_OP_HEADER Header
;
1184 typedef struct _EFI_IFR_LENGTH
{
1185 EFI_IFR_OP_HEADER Header
;
1188 typedef struct _EFI_IFR_NOT
{
1189 EFI_IFR_OP_HEADER Header
;
1192 typedef struct _EFI_IFR_BITWISE_NOT
{
1193 EFI_IFR_OP_HEADER Header
;
1194 } EFI_IFR_BITWISE_NOT
;
1196 typedef struct _EFI_IFR_TO_BOOLEAN
{
1197 EFI_IFR_OP_HEADER Header
;
1198 } EFI_IFR_TO_BOOLEAN
;
1200 #define EFI_IFR_STRING_UNSIGNED_DEC 0
1201 #define EFI_IFR_STRING_SIGNED_DEC 1
1202 #define EFI_IFR_STRING_LOWERCASE_HEX 2
1203 #define EFI_IFR_STRING_UPPERCASE_HEX 3
1205 #define EFI_IFR_STRING_ASCII 0
1206 #define EFI_IFR_STRING_UNICODE 8
1208 typedef struct _EFI_IFR_TO_STRING
{
1209 EFI_IFR_OP_HEADER Header
;
1211 } EFI_IFR_TO_STRING
;
1213 typedef struct _EFI_IFR_TO_UINT
{
1214 EFI_IFR_OP_HEADER Header
;
1217 typedef struct _EFI_IFR_TO_UPPER
{
1218 EFI_IFR_OP_HEADER Header
;
1221 typedef struct _EFI_IFR_TO_LOWER
{
1222 EFI_IFR_OP_HEADER Header
;
1225 typedef struct _EFI_IFR_ADD
{
1226 EFI_IFR_OP_HEADER Header
;
1229 typedef struct _EFI_IFR_AND
{
1230 EFI_IFR_OP_HEADER Header
;
1233 typedef struct _EFI_IFR_BITWISE_AND
{
1234 EFI_IFR_OP_HEADER Header
;
1235 } EFI_IFR_BITWISE_AND
;
1237 typedef struct _EFI_IFR_BITWISE_OR
{
1238 EFI_IFR_OP_HEADER Header
;
1239 } EFI_IFR_BITWISE_OR
;
1241 typedef struct _EFI_IFR_CATENATE
{
1242 EFI_IFR_OP_HEADER Header
;
1245 typedef struct _EFI_IFR_DIVIDE
{
1246 EFI_IFR_OP_HEADER Header
;
1249 typedef struct _EFI_IFR_EQUAL
{
1250 EFI_IFR_OP_HEADER Header
;
1253 typedef struct _EFI_IFR_GREATER_EQUAL
{
1254 EFI_IFR_OP_HEADER Header
;
1255 } EFI_IFR_GREATER_EQUAL
;
1257 typedef struct _EFI_IFR_GREATER_THAN
{
1258 EFI_IFR_OP_HEADER Header
;
1259 } EFI_IFR_GREATER_THAN
;
1261 typedef struct _EFI_IFR_LESS_EQUAL
{
1262 EFI_IFR_OP_HEADER Header
;
1263 } EFI_IFR_LESS_EQUAL
;
1265 typedef struct _EFI_IFR_LESS_THAN
{
1266 EFI_IFR_OP_HEADER Header
;
1267 } EFI_IFR_LESS_THAN
;
1269 typedef struct _EFI_IFR_MATCH
{
1270 EFI_IFR_OP_HEADER Header
;
1273 typedef struct _EFI_IFR_MULTIPLY
{
1274 EFI_IFR_OP_HEADER Header
;
1277 typedef struct _EFI_IFR_MODULO
{
1278 EFI_IFR_OP_HEADER Header
;
1281 typedef struct _EFI_IFR_NOT_EQUAL
{
1282 EFI_IFR_OP_HEADER Header
;
1283 } EFI_IFR_NOT_EQUAL
;
1285 typedef struct _EFI_IFR_OR
{
1286 EFI_IFR_OP_HEADER Header
;
1289 typedef struct _EFI_IFR_SHIFT_LEFT
{
1290 EFI_IFR_OP_HEADER Header
;
1291 } EFI_IFR_SHIFT_LEFT
;
1293 typedef struct _EFI_IFR_SHIFT_RIGHT
{
1294 EFI_IFR_OP_HEADER Header
;
1295 } EFI_IFR_SHIFT_RIGHT
;
1297 typedef struct _EFI_IFR_SUBTRACT
{
1298 EFI_IFR_OP_HEADER Header
;
1301 typedef struct _EFI_IFR_CONDITIONAL
{
1302 EFI_IFR_OP_HEADER Header
;
1303 } EFI_IFR_CONDITIONAL
;
1305 #define EFI_IFR_FF_CASE_SENSITIVE 0x00
1306 #define EFI_IFR_FF_CASE_INSENSITIVE 0x01
1308 typedef struct _EFI_IFR_FIND
{
1309 EFI_IFR_OP_HEADER Header
;
1313 typedef struct _EFI_IFR_MID
{
1314 EFI_IFR_OP_HEADER Header
;
1317 typedef struct _EFI_IFR_TOKEN
{
1318 EFI_IFR_OP_HEADER Header
;
1321 #define EFI_IFR_FLAGS_FIRST_MATCHING 0x00
1322 #define EFI_IFR_FLAGS_FIRST_NON_MATCHING 0x01
1324 typedef struct _EFI_IFR_SPAN
{
1325 EFI_IFR_OP_HEADER Header
;
1329 typedef struct _EFI_IFR_SECURITY
{
1331 /// Standard opcode header, where Header.Op = EFI_IFR_SECURITY_OP.
1333 EFI_IFR_OP_HEADER Header
;
1335 /// Security permission level.
1337 EFI_GUID Permissions
;
1340 typedef struct _EFI_IFR_FORM_MAP_METHOD
{
1342 /// The string identifier which provides the human-readable name of
1343 /// the configuration method for this standards map form.
1345 EFI_STRING_ID MethodTitle
;
1347 /// Identifier which uniquely specifies the configuration methods
1348 /// associated with this standards map form.
1350 EFI_GUID MethodIdentifier
;
1351 } EFI_IFR_FORM_MAP_METHOD
;
1353 typedef struct _EFI_IFR_FORM_MAP
{
1355 /// The sequence that defines the type of opcode as well as the length
1356 /// of the opcode being defined. Header.OpCode = EFI_IFR_FORM_MAP_OP.
1358 EFI_IFR_OP_HEADER Header
;
1360 /// The unique identifier for this particular form.
1364 /// One or more configuration method's name and unique identifier.
1366 // EFI_IFR_FORM_MAP_METHOD Methods[];
1369 typedef struct _EFI_IFR_SET
{
1371 /// The sequence that defines the type of opcode as well as the length
1372 /// of the opcode being defined. Header.OpCode = EFI_IFR_SET_OP.
1374 EFI_IFR_OP_HEADER Header
;
1376 /// Specifies the identifier of a previously declared variable store to
1377 /// use when storing the question's value.
1379 EFI_VARSTORE_ID VarStoreId
;
1382 /// A 16-bit Buffer Storage offset.
1384 EFI_STRING_ID VarName
;
1386 /// A Name Value or EFI Variable name (VarName).
1391 /// Specifies the type used for storage.
1396 typedef struct _EFI_IFR_GET
{
1398 /// The sequence that defines the type of opcode as well as the length
1399 /// of the opcode being defined. Header.OpCode = EFI_IFR_GET_OP.
1401 EFI_IFR_OP_HEADER Header
;
1403 /// Specifies the identifier of a previously declared variable store to
1404 /// use when retrieving the value.
1406 EFI_VARSTORE_ID VarStoreId
;
1409 /// A 16-bit Buffer Storage offset.
1411 EFI_STRING_ID VarName
;
1413 /// A Name Value or EFI Variable name (VarName).
1418 /// Specifies the type used for storage.
1423 typedef struct _EFI_IFR_READ
{
1424 EFI_IFR_OP_HEADER Header
;
1427 typedef struct _EFI_IFR_WRITE
{
1428 EFI_IFR_OP_HEADER Header
;
1431 typedef struct _EFI_IFR_MAP
{
1432 EFI_IFR_OP_HEADER Header
;
1549 CHAR16 ShiftedUnicode
;
1550 CHAR16 AltGrUnicode
;
1551 CHAR16 ShiftedAltGrUnicode
;
1553 UINT16 AffectedAttribute
;
1554 } EFI_KEY_DESCRIPTOR
;
1557 // A key which is affected by all the standard shift modifiers.
1558 // Most keys would be expected to have this bit active.
1560 #define EFI_AFFECTED_BY_STANDARD_SHIFT 0x0001
1562 // This key is affected by the caps lock so that if a keyboard driver
1563 // would need to disambiguate between a key which had a "1" defined
1564 // versus a "a" character. Having this bit turned on would tell
1565 // the keyboard driver to use the appropriate shifted state or not.
1567 #define EFI_AFFECTED_BY_CAPS_LOCK 0x0002
1569 // Similar to the case of CAPS lock, if this bit is active, the key
1570 // is affected by the num lock being turned on.
1572 #define EFI_AFFECTED_BY_NUM_LOCK 0x0004
1575 UINT16 LayoutLength
;
1577 UINT32 LayoutDescriptorStringOffset
;
1578 UINT8 DescriptorCount
;
1579 // EFI_KEY_DESCRIPTOR Descriptors[];
1580 } EFI_HII_KEYBOARD_LAYOUT
;
1583 EFI_HII_PACKAGE_HEADER Header
;
1585 // EFI_HII_KEYBOARD_LAYOUT Layout[];
1586 } EFI_HII_KEYBOARD_PACKAGE_HDR
;
1591 CHAR16 DescriptionString
[1];
1592 } EFI_DESCRIPTION_STRING
;
1595 UINT16 DescriptionCount
;
1596 EFI_DESCRIPTION_STRING DescriptionString
[1];
1597 } EFI_DESCRIPTION_STRING_BUNDLE
;
1602 #define EFI_NULL_MODIFIER 0x0000
1603 #define EFI_LEFT_CONTROL_MODIFIER 0x0001
1604 #define EFI_RIGHT_CONTROL_MODIFIER 0x0002
1605 #define EFI_LEFT_ALT_MODIFIER 0x0003
1606 #define EFI_RIGHT_ALT_MODIFIER 0x0004
1607 #define EFI_ALT_GR_MODIFIER 0x0005
1608 #define EFI_INSERT_MODIFIER 0x0006
1609 #define EFI_DELETE_MODIFIER 0x0007
1610 #define EFI_PAGE_DOWN_MODIFIER 0x0008
1611 #define EFI_PAGE_UP_MODIFIER 0x0009
1612 #define EFI_HOME_MODIFIER 0x000A
1613 #define EFI_END_MODIFIER 0x000B
1614 #define EFI_LEFT_SHIFT_MODIFIER 0x000C
1615 #define EFI_RIGHT_SHIFT_MODIFIER 0x000D
1616 #define EFI_CAPS_LOCK_MODIFIER 0x000E
1617 #define EFI_NUM_LOCK _MODIFIER 0x000F
1618 #define EFI_LEFT_ARROW_MODIFIER 0x0010
1619 #define EFI_RIGHT_ARROW_MODIFIER 0x0011
1620 #define EFI_DOWN_ARROW_MODIFIER 0x0012
1621 #define EFI_UP_ARROW_MODIFIER 0x0013
1622 #define EFI_NS_KEY_MODIFIER 0x0014
1623 #define EFI_NS_KEY_DEPENDENCY_MODIFIER 0x0015
1624 #define EFI_FUNCTION_KEY_ONE_MODIFIER 0x0016
1625 #define EFI_FUNCTION_KEY_TWO_MODIFIER 0x0017
1626 #define EFI_FUNCTION_KEY_THREE_MODIFIER 0x0018
1627 #define EFI_FUNCTION_KEY_FOUR_MODIFIER 0x0019
1628 #define EFI_FUNCTION_KEY_FIVE_MODIFIER 0x001A
1629 #define EFI_FUNCTION_KEY_SIX_MODIFIER 0x001B
1630 #define EFI_FUNCTION_KEY_SEVEN_MODIFIER 0x001C
1631 #define EFI_FUNCTION_KEY_EIGHT_MODIFIER 0x001D
1632 #define EFI_FUNCTION_KEY_NINE_MODIFIER 0x001E
1633 #define EFI_FUNCTION_KEY_TEN_MODIFIER 0x001F
1634 #define EFI_FUNCTION_KEY_ELEVEN_MODIFIER 0x0020
1635 #define EFI_FUNCTION_KEY_TWELVE_MODIFIER 0x0021
1638 // Keys that have multiple control functions based on modifier
1639 // settings are handled in the keyboard driver implementation.
1640 // For instance PRINT_KEY might have a modifier held down and
1641 // is still a nonprinting character, but might have an alternate
1642 // control function like SYSREQUEST
1644 #define EFI_PRINT_MODIFIER 0x0022
1645 #define EFI_SYS_REQUEST_MODIFIER 0x0023
1646 #define EFI_SCROLL_LOCK_MODIFIER 0x0024
1647 #define EFI_PAUSE_MODIFIER 0x0025
1648 #define EFI_BREAK_MODIFIER 0x0026
1655 // References to string tokens must use this macro to enable scanning for
1659 // STRING_TOKEN is not defined in UEFI specification. But it is placed
1660 // here for the easy access by C files and VFR source files.
1662 #define STRING_TOKEN(t) t