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 - 2009, Intel Corporation
7 All rights reserved. This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15 @par Revision Reference:
16 These definitions are from UEFI2.1.
20 #ifndef __UEFI_INTERNAL_FORMREPRESENTATION_H__
21 #define __UEFI_INTERNAL_FORMREPRESENTATION_H__
23 #include <Guid/HiiFormMapMethodGuid.h>
26 /// The following types are currently defined:
28 typedef VOID
* EFI_HII_HANDLE
;
29 typedef CHAR16
* EFI_STRING
;
30 typedef UINT16 EFI_IMAGE_ID
;
31 typedef UINT16 EFI_QUESTION_ID
;
32 typedef UINT16 EFI_STRING_ID
;
33 typedef UINT16 EFI_FORM_ID
;
34 typedef UINT16 EFI_VARSTORE_ID
;
36 typedef UINT16 EFI_DEFAULT_ID
;
38 typedef UINT32 EFI_HII_FONT_STYLE
;
45 // Definitions for Package Lists and Package Headers
50 /// The header found at the start of each package list.
53 EFI_GUID PackageListGuid
;
55 } EFI_HII_PACKAGE_LIST_HEADER
;
58 /// The header found at the start of each package.
64 } EFI_HII_PACKAGE_HEADER
;
67 // Value of HII package type
69 #define EFI_HII_PACKAGE_TYPE_ALL 0x00
70 #define EFI_HII_PACKAGE_TYPE_GUID 0x01
71 #define EFI_HII_PACKAGE_FORMS 0x02
72 #define EFI_HII_PACKAGE_STRINGS 0x04
73 #define EFI_HII_PACKAGE_FONTS 0x05
74 #define EFI_HII_PACKAGE_IMAGES 0x06
75 #define EFI_HII_PACKAGE_SIMPLE_FONTS 0x07
76 #define EFI_HII_PACKAGE_DEVICE_PATH 0x08
77 #define EFI_HII_PACKAGE_KEYBOARD_LAYOUT 0x09
78 #define EFI_HII_PACKAGE_END 0xDF
79 #define EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN 0xE0
80 #define EFI_HII_PACKAGE_TYPE_SYSTEM_END 0xFF
83 // Definitions for Simplified Font Package
88 // Contents of EFI_NARROW_GLYPH.Attributes
90 #define EFI_GLYPH_NON_SPACING 0x01
91 #define EFI_GLYPH_WIDE 0x02
92 #define EFI_GLYPH_HEIGHT 19
93 #define EFI_GLYPH_WIDTH 8
98 UINT8 GlyphCol1
[EFI_GLYPH_HEIGHT
];
102 CHAR16 UnicodeWeight
;
104 UINT8 GlyphCol1
[EFI_GLYPH_HEIGHT
];
105 UINT8 GlyphCol2
[EFI_GLYPH_HEIGHT
];
110 /// A simplified font package consists of a font header
111 /// followed by a series of glyph structures.
113 typedef struct _EFI_HII_SIMPLE_FONT_PACKAGE_HDR
{
114 EFI_HII_PACKAGE_HEADER Header
;
115 UINT16 NumberOfNarrowGlyphs
;
116 UINT16 NumberOfWideGlyphs
;
117 // EFI_NARROW_GLYPH NarrowGlyphs[];
118 // EFI_WIDE_GLYPH WideGlyphs[];
119 } EFI_HII_SIMPLE_FONT_PACKAGE_HDR
;
122 // Definitions for Font Package
127 // Value for font style
129 #define EFI_HII_FONT_STYLE_NORMAL 0x00000000
130 #define EFI_HII_FONT_STYLE_BOLD 0x00000001
131 #define EFI_HII_FONT_STYLE_ITALIC 0x00000002
132 #define EFI_HII_FONT_STYLE_EMBOSS 0x00010000
133 #define EFI_HII_FONT_STYLE_OUTLINE 0x00020000
134 #define EFI_HII_FONT_STYLE_SHADOW 0x00040000
135 #define EFI_HII_FONT_STYLE_UNDERLINE 0x00080000
136 #define EFI_HII_FONT_STYLE_DBL_UNDER 0x00100000
138 typedef struct _EFI_HII_GLYPH_INFO
{
144 } EFI_HII_GLYPH_INFO
;
147 /// The fixed header consists of a standard record header and
148 /// then the character values in this section, the flags
149 /// (including the encoding method) and the offsets of the glyph
150 /// information, the glyph bitmaps and the character map.
152 typedef struct _EFI_HII_FONT_PACKAGE_HDR
{
153 EFI_HII_PACKAGE_HEADER Header
;
155 UINT32 GlyphBlockOffset
;
156 EFI_HII_GLYPH_INFO Cell
;
157 EFI_HII_FONT_STYLE FontStyle
;
158 CHAR16 FontFamily
[1];
159 } EFI_HII_FONT_PACKAGE_HDR
;
162 // Value of different glyph info block types
164 #define EFI_HII_GIBT_END 0x00
165 #define EFI_HII_GIBT_GLYPH 0x10
166 #define EFI_HII_GIBT_GLYPHS 0x11
167 #define EFI_HII_GIBT_GLYPH_DEFAULT 0x12
168 #define EFI_HII_GIBT_GLYPHS_DEFAULT 0x13
169 #define EFI_HII_GIBT_DUPLICATE 0x20
170 #define EFI_HII_GIBT_SKIP2 0x21
171 #define EFI_HII_GIBT_SKIP1 0x22
172 #define EFI_HII_GIBT_DEFAULTS 0x23
173 #define EFI_HII_GIBT_EXT1 0x30
174 #define EFI_HII_GIBT_EXT2 0x31
175 #define EFI_HII_GIBT_EXT4 0x32
177 typedef struct _EFI_HII_GLYPH_BLOCK
{
179 } EFI_HII_GLYPH_BLOCK
;
182 // Definition of different glyph info block types
185 typedef struct _EFI_HII_GIBT_DEFAULTS_BLOCK
{
186 EFI_HII_GLYPH_BLOCK Header
;
187 EFI_HII_GLYPH_INFO Cell
;
188 } EFI_HII_GIBT_DEFAULTS_BLOCK
;
190 typedef struct _EFI_HII_GIBT_DUPLICATE_BLOCK
{
191 EFI_HII_GLYPH_BLOCK Header
;
193 } EFI_HII_GIBT_DUPLICATE_BLOCK
;
195 typedef struct _EFI_GLYPH_GIBT_END_BLOCK
{
196 EFI_HII_GLYPH_BLOCK Header
;
197 } EFI_GLYPH_GIBT_END_BLOCK
;
199 typedef struct _EFI_HII_GIBT_EXT1_BLOCK
{
200 EFI_HII_GLYPH_BLOCK Header
;
203 } EFI_HII_GIBT_EXT1_BLOCK
;
205 typedef struct _EFI_HII_GIBT_EXT2_BLOCK
{
206 EFI_HII_GLYPH_BLOCK Header
;
209 } EFI_HII_GIBT_EXT2_BLOCK
;
211 typedef struct _EFI_HII_GIBT_EXT4_BLOCK
{
212 EFI_HII_GLYPH_BLOCK Header
;
215 } EFI_HII_GIBT_EXT4_BLOCK
;
217 typedef struct _EFI_HII_GIBT_GLYPH_BLOCK
{
218 EFI_HII_GLYPH_BLOCK Header
;
219 EFI_HII_GLYPH_INFO Cell
;
221 } EFI_HII_GIBT_GLYPH_BLOCK
;
223 typedef struct _EFI_HII_GIBT_GLYPHS_BLOCK
{
224 EFI_HII_GLYPH_BLOCK Header
;
225 EFI_HII_GLYPH_INFO Cell
;
228 } EFI_HII_GIBT_GLYPHS_BLOCK
;
230 typedef struct _EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK
{
231 EFI_HII_GLYPH_BLOCK Header
;
233 } EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK
;
235 typedef struct _EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK
{
236 EFI_HII_GLYPH_BLOCK Header
;
239 } EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK
;
241 typedef struct _EFI_HII_GIBT_SKIP1_BLOCK
{
242 EFI_HII_GLYPH_BLOCK Header
;
244 } EFI_HII_GIBT_SKIP1_BLOCK
;
246 typedef struct _EFI_HII_GIBT_SKIP2_BLOCK
{
247 EFI_HII_GLYPH_BLOCK Header
;
249 } EFI_HII_GIBT_SKIP2_BLOCK
;
252 // Definitions for Device Path Package
257 /// The device path package is used to carry a device path
258 /// associated with the package list.
260 typedef struct _EFI_HII_DEVICE_PATH_PACKAGE
{
261 EFI_HII_PACKAGE_HEADER Header
;
262 // EFI_DEVICE_PATH_PROTOCOL DevicePath[];
263 } EFI_HII_DEVICE_PATH_PACKAGE
;
266 // Definitions for GUID Package
271 /// The GUID package is used to carry data where the format is defined by a GUID.
273 typedef struct _EFI_HII_GUID_PACKAGE_HDR
{
274 EFI_HII_PACKAGE_HEADER Header
;
276 // Data per GUID definition may follow
277 } EFI_HII_GUID_PACKAGE_HDR
;
280 // Definitions for String Package
284 #define UEFI_CONFIG_LANG L"x-UEFI"
285 #define UEFI_CONFIG_LANG2 L"x-i-UEFI"
288 /// The fixed header consists of a standard record header and then the string identifiers
289 /// contained in this section and the offsets of the string and language information.
291 typedef struct _EFI_HII_STRING_PACKAGE_HDR
{
292 EFI_HII_PACKAGE_HEADER Header
;
294 UINT32 StringInfoOffset
;
295 CHAR16 LanguageWindow
[16];
296 EFI_STRING_ID LanguageName
;
298 } EFI_HII_STRING_PACKAGE_HDR
;
302 } EFI_HII_STRING_BLOCK
;
305 // Value of different string information block types
307 #define EFI_HII_SIBT_END 0x00
308 #define EFI_HII_SIBT_STRING_SCSU 0x10
309 #define EFI_HII_SIBT_STRING_SCSU_FONT 0x11
310 #define EFI_HII_SIBT_STRINGS_SCSU 0x12
311 #define EFI_HII_SIBT_STRINGS_SCSU_FONT 0x13
312 #define EFI_HII_SIBT_STRING_UCS2 0x14
313 #define EFI_HII_SIBT_STRING_UCS2_FONT 0x15
314 #define EFI_HII_SIBT_STRINGS_UCS2 0x16
315 #define EFI_HII_SIBT_STRINGS_UCS2_FONT 0x17
316 #define EFI_HII_SIBT_DUPLICATE 0x20
317 #define EFI_HII_SIBT_SKIP2 0x21
318 #define EFI_HII_SIBT_SKIP1 0x22
319 #define EFI_HII_SIBT_EXT1 0x30
320 #define EFI_HII_SIBT_EXT2 0x31
321 #define EFI_HII_SIBT_EXT4 0x32
322 #define EFI_HII_SIBT_FONT 0x40
325 // Definition of different string information block types
328 typedef struct _EFI_HII_SIBT_DUPLICATE_BLOCK
{
329 EFI_HII_STRING_BLOCK Header
;
330 EFI_STRING_ID StringId
;
331 } EFI_HII_SIBT_DUPLICATE_BLOCK
;
333 typedef struct _EFI_HII_SIBT_END_BLOCK
{
334 EFI_HII_STRING_BLOCK Header
;
335 } EFI_HII_SIBT_END_BLOCK
;
337 typedef struct _EFI_HII_SIBT_EXT1_BLOCK
{
338 EFI_HII_STRING_BLOCK Header
;
341 } EFI_HII_SIBT_EXT1_BLOCK
;
343 typedef struct _EFI_HII_SIBT_EXT2_BLOCK
{
344 EFI_HII_STRING_BLOCK Header
;
347 } EFI_HII_SIBT_EXT2_BLOCK
;
349 typedef struct _EFI_HII_SIBT_EXT4_BLOCK
{
350 EFI_HII_STRING_BLOCK Header
;
353 } EFI_HII_SIBT_EXT4_BLOCK
;
355 typedef struct _EFI_HII_SIBT_FONT_BLOCK
{
356 EFI_HII_SIBT_EXT2_BLOCK Header
;
359 EFI_HII_FONT_STYLE FontStyle
;
361 } EFI_HII_SIBT_FONT_BLOCK
;
363 typedef struct _EFI_HII_SIBT_SKIP1_BLOCK
{
364 EFI_HII_STRING_BLOCK Header
;
366 } EFI_HII_SIBT_SKIP1_BLOCK
;
368 typedef struct _EFI_HII_SIBT_SKIP2_BLOCK
{
369 EFI_HII_STRING_BLOCK Header
;
371 } EFI_HII_SIBT_SKIP2_BLOCK
;
373 typedef struct _EFI_HII_SIBT_STRING_SCSU_BLOCK
{
374 EFI_HII_STRING_BLOCK Header
;
376 } EFI_HII_SIBT_STRING_SCSU_BLOCK
;
378 typedef struct _EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK
{
379 EFI_HII_STRING_BLOCK Header
;
380 UINT8 FontIdentifier
;
382 } EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK
;
384 typedef struct _EFI_HII_SIBT_STRINGS_SCSU_BLOCK
{
385 EFI_HII_STRING_BLOCK Header
;
388 } EFI_HII_SIBT_STRINGS_SCSU_BLOCK
;
390 typedef struct _EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK
{
391 EFI_HII_STRING_BLOCK Header
;
392 UINT8 FontIdentifier
;
395 } EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK
;
397 typedef struct _EFI_HII_SIBT_STRING_UCS2_BLOCK
{
398 EFI_HII_STRING_BLOCK Header
;
399 CHAR16 StringText
[1];
400 } EFI_HII_SIBT_STRING_UCS2_BLOCK
;
402 typedef struct _EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK
{
403 EFI_HII_STRING_BLOCK Header
;
404 UINT8 FontIdentifier
;
405 CHAR16 StringText
[1];
406 } EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK
;
408 typedef struct _EFI_HII_SIBT_STRINGS_UCS2_BLOCK
{
409 EFI_HII_STRING_BLOCK Header
;
411 CHAR16 StringText
[1];
412 } EFI_HII_SIBT_STRINGS_UCS2_BLOCK
;
414 typedef struct _EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK
{
415 EFI_HII_STRING_BLOCK Header
;
416 UINT8 FontIdentifier
;
418 CHAR16 StringText
[1];
419 } EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK
;
422 // Definitions for Image Package
426 typedef struct _EFI_HII_IMAGE_PACKAGE_HDR
{
427 EFI_HII_PACKAGE_HEADER Header
;
428 UINT32 ImageInfoOffset
;
429 UINT32 PaletteInfoOffset
;
430 } EFI_HII_IMAGE_PACKAGE_HDR
;
432 typedef struct _EFI_HII_IMAGE_BLOCK
{
434 } EFI_HII_IMAGE_BLOCK
;
437 // Value of different image information block types
439 #define EFI_HII_IIBT_END 0x00
440 #define EFI_HII_IIBT_IMAGE_1BIT 0x10
441 #define EFI_HII_IIBT_IMAGE_1BIT_TRANS 0x11
442 #define EFI_HII_IIBT_IMAGE_4BIT 0x12
443 #define EFI_HII_IIBT_IMAGE_4BIT_TRANS 0x13
444 #define EFI_HII_IIBT_IMAGE_8BIT 0x14
445 #define EFI_HII_IIBT_IMAGE_8BIT_TRANS 0x15
446 #define EFI_HII_IIBT_IMAGE_24BIT 0x16
447 #define EFI_HII_IIBT_IMAGE_24BIT_TRANS 0x17
448 #define EFI_HII_IIBT_IMAGE_JPEG 0x18
449 #define EFI_HII_IIBT_DUPLICATE 0x20
450 #define EFI_HII_IIBT_SKIP2 0x21
451 #define EFI_HII_IIBT_SKIP1 0x22
452 #define EFI_HII_IIBT_EXT1 0x30
453 #define EFI_HII_IIBT_EXT2 0x31
454 #define EFI_HII_IIBT_EXT4 0x32
457 // Definition of different image information block types
460 typedef struct _EFI_HII_IIBT_END_BLOCK
{
461 EFI_HII_IMAGE_BLOCK Header
;
462 } EFI_HII_IIBT_END_BLOCK
;
464 typedef struct _EFI_HII_IIBT_EXT1_BLOCK
{
465 EFI_HII_IMAGE_BLOCK Header
;
468 } EFI_HII_IIBT_EXT1_BLOCK
;
470 typedef struct _EFI_HII_IIBT_EXT2_BLOCK
{
471 EFI_HII_IMAGE_BLOCK Header
;
474 } EFI_HII_IIBT_EXT2_BLOCK
;
476 typedef struct _EFI_HII_IIBT_EXT4_BLOCK
{
477 EFI_HII_IMAGE_BLOCK Header
;
480 } EFI_HII_IIBT_EXT4_BLOCK
;
482 typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BASE
{
486 } EFI_HII_IIBT_IMAGE_1BIT_BASE
;
488 typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BLOCK
{
489 EFI_HII_IMAGE_BLOCK Header
;
491 EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap
;
492 } EFI_HII_IIBT_IMAGE_1BIT_BLOCK
;
494 typedef struct _EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK
{
495 EFI_HII_IMAGE_BLOCK Header
;
497 EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap
;
498 } EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK
;
500 typedef struct _EFI_HII_RGB_PIXEL
{
506 typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BASE
{
509 EFI_HII_RGB_PIXEL Bitmap
[1];
510 } EFI_HII_IIBT_IMAGE_24BIT_BASE
;
512 typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BLOCK
{
513 EFI_HII_IMAGE_BLOCK Header
;
514 EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap
;
515 } EFI_HII_IIBT_IMAGE_24BIT_BLOCK
;
517 typedef struct _EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK
{
518 EFI_HII_IMAGE_BLOCK Header
;
519 EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap
;
520 } EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK
;
522 typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BASE
{
526 } EFI_HII_IIBT_IMAGE_4BIT_BASE
;
528 typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BLOCK
{
529 EFI_HII_IMAGE_BLOCK Header
;
531 EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap
;
532 } EFI_HII_IIBT_IMAGE_4BIT_BLOCK
;
534 typedef struct _EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK
{
535 EFI_HII_IMAGE_BLOCK Header
;
537 EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap
;
538 } EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK
;
540 typedef struct _EFI_HII_IIBT_IMAGE_8BIT_BASE
{
544 } EFI_HII_IIBT_IMAGE_8BIT_BASE
;
546 typedef struct _EFI_HII_IIBT_IMAGE_8BIT_PALETTE_BLOCK
{
547 EFI_HII_IMAGE_BLOCK Header
;
549 EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap
;
550 } EFI_HII_IIBT_IMAGE_8BIT_BLOCK
;
552 typedef struct _EFI_HII_IIBT_IMAGE_8BIT_TRANS_BLOCK
{
553 EFI_HII_IMAGE_BLOCK Header
;
555 EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap
;
556 } EFI_HII_IIBT_IMAGE_8BIT_TRAN_BLOCK
;
558 typedef struct _EFI_HII_IIBT_DUPLICATE_BLOCK
{
559 EFI_HII_IMAGE_BLOCK Header
;
560 EFI_IMAGE_ID ImageId
;
561 } EFI_HII_IIBT_DUPLICATE_BLOCK
;
563 typedef struct _EFI_HII_IIBT_JPEG_BLOCK
{
564 EFI_HII_IMAGE_BLOCK Header
;
567 } EFI_HII_IIBT_JPEG_BLOCK
;
569 typedef struct _EFI_HII_IIBT_SKIP1_BLOCK
{
570 EFI_HII_IMAGE_BLOCK Header
;
572 } EFI_HII_IIBT_SKIP1_BLOCK
;
574 typedef struct _EFI_HII_IIBT_SKIP2_BLOCK
{
575 EFI_HII_IMAGE_BLOCK Header
;
577 } EFI_HII_IIBT_SKIP2_BLOCK
;
580 // Definitions for Palette Information
583 typedef struct _EFI_HII_IMAGE_PALETTE_INFO_HEADER
{
585 } EFI_HII_IMAGE_PALETTE_INFO_HEADER
;
587 typedef struct _EFI_HII_IMAGE_PALETTE_INFO
{
589 EFI_HII_RGB_PIXEL PaletteValue
[1];
590 } EFI_HII_IMAGE_PALETTE_INFO
;
593 // Definitions for Forms Package
598 /// The Forms package is used to carry forms-based encoding data.
600 typedef struct _EFI_HII_FORM_PACKAGE
{
601 EFI_HII_PACKAGE_HEADER Header
;
602 // EFI_IFR_OP_HEADER OpCodeHeader;
603 // More op-codes follow
604 } EFI_HII_FORM_PACKAGE
;
626 EFI_STRING_ID string
; ///< EFI_IFR_TYPE_STRING, EFI_IFR_TYPE_ACTION
627 // UINT8 buffer[]; ///< EFI_IFR_TYPE_ORDERED_LIST
628 } EFI_IFR_TYPE_VALUE
;
633 #define EFI_IFR_FORM_OP 0x01
634 #define EFI_IFR_SUBTITLE_OP 0x02
635 #define EFI_IFR_TEXT_OP 0x03
636 #define EFI_IFR_IMAGE_OP 0x04
637 #define EFI_IFR_ONE_OF_OP 0x05
638 #define EFI_IFR_CHECKBOX_OP 0x06
639 #define EFI_IFR_NUMERIC_OP 0x07
640 #define EFI_IFR_PASSWORD_OP 0x08
641 #define EFI_IFR_ONE_OF_OPTION_OP 0x09
642 #define EFI_IFR_SUPPRESS_IF_OP 0x0A
643 #define EFI_IFR_LOCKED_OP 0x0B
644 #define EFI_IFR_ACTION_OP 0x0C
645 #define EFI_IFR_RESET_BUTTON_OP 0x0D
646 #define EFI_IFR_FORM_SET_OP 0x0E
647 #define EFI_IFR_REF_OP 0x0F
648 #define EFI_IFR_NO_SUBMIT_IF_OP 0x10
649 #define EFI_IFR_INCONSISTENT_IF_OP 0x11
650 #define EFI_IFR_EQ_ID_VAL_OP 0x12
651 #define EFI_IFR_EQ_ID_ID_OP 0x13
652 #define EFI_IFR_EQ_ID_LIST_OP 0x14
653 #define EFI_IFR_AND_OP 0x15
654 #define EFI_IFR_OR_OP 0x16
655 #define EFI_IFR_NOT_OP 0x17
656 #define EFI_IFR_RULE_OP 0x18
657 #define EFI_IFR_GRAY_OUT_IF_OP 0x19
658 #define EFI_IFR_DATE_OP 0x1A
659 #define EFI_IFR_TIME_OP 0x1B
660 #define EFI_IFR_STRING_OP 0x1C
661 #define EFI_IFR_REFRESH_OP 0x1D
662 #define EFI_IFR_DISABLE_IF_OP 0x1E
663 #define EFI_IFR_TO_LOWER_OP 0x20
664 #define EFI_IFR_TO_UPPER_OP 0x21
665 #define EFI_IFR_MAP_OP 0x22
666 #define EFI_IFR_ORDERED_LIST_OP 0x23
667 #define EFI_IFR_VARSTORE_OP 0x24
668 #define EFI_IFR_VARSTORE_NAME_VALUE_OP 0x25
669 #define EFI_IFR_VARSTORE_EFI_OP 0x26
670 #define EFI_IFR_VARSTORE_DEVICE_OP 0x27
671 #define EFI_IFR_VERSION_OP 0x28
672 #define EFI_IFR_END_OP 0x29
673 #define EFI_IFR_MATCH_OP 0x2A
674 #define EFI_IFR_SET_OP 0x2C
675 #define EFI_IFR_GET_OP 0x2B
676 #define EFI_IFR_READ_OP 0x2D
677 #define EFI_IFR_WRITE_OP 0x2E
678 #define EFI_IFR_EQUAL_OP 0x2F
679 #define EFI_IFR_NOT_EQUAL_OP 0x30
680 #define EFI_IFR_GREATER_THAN_OP 0x31
681 #define EFI_IFR_GREATER_EQUAL_OP 0x32
682 #define EFI_IFR_LESS_THAN_OP 0x33
683 #define EFI_IFR_LESS_EQUAL_OP 0x34
684 #define EFI_IFR_BITWISE_AND_OP 0x35
685 #define EFI_IFR_BITWISE_OR_OP 0x36
686 #define EFI_IFR_BITWISE_NOT_OP 0x37
687 #define EFI_IFR_SHIFT_LEFT_OP 0x38
688 #define EFI_IFR_SHIFT_RIGHT_OP 0x39
689 #define EFI_IFR_ADD_OP 0x3A
690 #define EFI_IFR_SUBTRACT_OP 0x3B
691 #define EFI_IFR_MULTIPLY_OP 0x3C
692 #define EFI_IFR_DIVIDE_OP 0x3D
693 #define EFI_IFR_MODULO_OP 0x3E
694 #define EFI_IFR_RULE_REF_OP 0x3F
695 #define EFI_IFR_QUESTION_REF1_OP 0x40
696 #define EFI_IFR_QUESTION_REF2_OP 0x41
697 #define EFI_IFR_UINT8_OP 0x42
698 #define EFI_IFR_UINT16_OP 0x43
699 #define EFI_IFR_UINT32_OP 0x44
700 #define EFI_IFR_UINT64_OP 0x45
701 #define EFI_IFR_TRUE_OP 0x46
702 #define EFI_IFR_FALSE_OP 0x47
703 #define EFI_IFR_TO_UINT_OP 0x48
704 #define EFI_IFR_TO_STRING_OP 0x49
705 #define EFI_IFR_TO_BOOLEAN_OP 0x4A
706 #define EFI_IFR_MID_OP 0x4B
707 #define EFI_IFR_FIND_OP 0x4C
708 #define EFI_IFR_TOKEN_OP 0x4D
709 #define EFI_IFR_STRING_REF1_OP 0x4E
710 #define EFI_IFR_STRING_REF2_OP 0x4F
711 #define EFI_IFR_CONDITIONAL_OP 0x50
712 #define EFI_IFR_QUESTION_REF3_OP 0x51
713 #define EFI_IFR_ZERO_OP 0x52
714 #define EFI_IFR_ONE_OP 0x53
715 #define EFI_IFR_ONES_OP 0x54
716 #define EFI_IFR_UNDEFINED_OP 0x55
717 #define EFI_IFR_LENGTH_OP 0x56
718 #define EFI_IFR_DUP_OP 0x57
719 #define EFI_IFR_THIS_OP 0x58
720 #define EFI_IFR_SPAN_OP 0x59
721 #define EFI_IFR_VALUE_OP 0x5A
722 #define EFI_IFR_DEFAULT_OP 0x5B
723 #define EFI_IFR_DEFAULTSTORE_OP 0x5C
724 #define EFI_IFR_FORM_MAP_OP 0x5D
725 #define EFI_IFR_CATENATE_OP 0x5E
726 #define EFI_IFR_GUID_OP 0x5F
727 #define EFI_IFR_SECURITY_OP 0x60
730 // Definitions of IFR Standard Headers
734 typedef struct _EFI_IFR_OP_HEADER
{
740 typedef struct _EFI_IFR_STATEMENT_HEADER
{
741 EFI_STRING_ID Prompt
;
743 } EFI_IFR_STATEMENT_HEADER
;
745 typedef struct _EFI_IFR_QUESTION_HEADER
{
746 EFI_IFR_STATEMENT_HEADER Header
;
747 EFI_QUESTION_ID QuestionId
;
748 EFI_VARSTORE_ID VarStoreId
;
750 EFI_STRING_ID VarName
;
754 } EFI_IFR_QUESTION_HEADER
;
757 // Flag values of EFI_IFR_QUESTION_HEADER
759 #define EFI_IFR_FLAG_READ_ONLY 0x01
760 #define EFI_IFR_FLAG_CALLBACK 0x04
761 #define EFI_IFR_FLAG_RESET_REQUIRED 0x10
762 #define EFI_IFR_FLAG_OPTIONS_ONLY 0x80
765 // Definition for Opcode Reference
768 typedef struct _EFI_IFR_DEFAULTSTORE
{
769 EFI_IFR_OP_HEADER Header
;
770 EFI_STRING_ID DefaultName
;
772 } EFI_IFR_DEFAULTSTORE
;
775 // Default Identifier of default store
777 #define EFI_HII_DEFAULT_CLASS_STANDARD 0x0000
778 #define EFI_HII_DEFAULT_CLASS_MANUFACTURING 0x0001
779 #define EFI_HII_DEFAULT_CLASS_SAFE 0x0002
780 #define EFI_HII_DEFAULT_CLASS_PLATFORM_BEGIN 0x4000
781 #define EFI_HII_DEFAULT_CLASS_PLATFORM_END 0x7fff
782 #define EFI_HII_DEFAULT_CLASS_HARDWARE_BEGIN 0x8000
783 #define EFI_HII_DEFAULT_CLASS_HARDWARE_END 0xbfff
784 #define EFI_HII_DEFAULT_CLASS_FIRMWARE_BEGIN 0xc000
785 #define EFI_HII_DEFAULT_CLASS_FIRMWARE_END 0xffff
787 typedef struct _EFI_IFR_VARSTORE
{
788 EFI_IFR_OP_HEADER Header
;
790 EFI_VARSTORE_ID VarStoreId
;
795 typedef struct _EFI_IFR_VARSTORE_EFI
{
796 EFI_IFR_OP_HEADER Header
;
797 EFI_VARSTORE_ID VarStoreId
;
800 } EFI_IFR_VARSTORE_EFI
;
802 typedef struct _EFI_IFR_VARSTORE_NAME_VALUE
{
803 EFI_IFR_OP_HEADER Header
;
804 EFI_VARSTORE_ID VarStoreId
;
806 } EFI_IFR_VARSTORE_NAME_VALUE
;
808 typedef struct _EFI_IFR_FORM_SET
{
809 EFI_IFR_OP_HEADER Header
;
811 EFI_STRING_ID FormSetTitle
;
814 // EFI_GUID ClassGuid[];
817 typedef struct _EFI_IFR_END
{
818 EFI_IFR_OP_HEADER Header
;
821 typedef struct _EFI_IFR_FORM
{
822 EFI_IFR_OP_HEADER Header
;
824 EFI_STRING_ID FormTitle
;
827 typedef struct _EFI_IFR_IMAGE
{
828 EFI_IFR_OP_HEADER Header
;
832 typedef struct _EFI_IFR_LOCKED
{
833 EFI_IFR_OP_HEADER Header
;
836 typedef struct _EFI_IFR_RULE
{
837 EFI_IFR_OP_HEADER Header
;
841 typedef struct _EFI_IFR_DEFAULT
{
842 EFI_IFR_OP_HEADER Header
;
845 EFI_IFR_TYPE_VALUE Value
;
848 typedef struct _EFI_IFR_VALUE
{
849 EFI_IFR_OP_HEADER Header
;
852 typedef struct _EFI_IFR_SUBTITLE
{
853 EFI_IFR_OP_HEADER Header
;
854 EFI_IFR_STATEMENT_HEADER Statement
;
858 #define EFI_IFR_FLAGS_HORIZONTAL 0x01
860 typedef struct _EFI_IFR_CHECKBOX
{
861 EFI_IFR_OP_HEADER Header
;
862 EFI_IFR_QUESTION_HEADER Question
;
866 #define EFI_IFR_CHECKBOX_DEFAULT 0x01
867 #define EFI_IFR_CHECKBOX_DEFAULT_MFG 0x02
869 typedef struct _EFI_IFR_TEXT
{
870 EFI_IFR_OP_HEADER Header
;
871 EFI_IFR_STATEMENT_HEADER Statement
;
872 EFI_STRING_ID TextTwo
;
875 typedef struct _EFI_IFR_REF
{
876 EFI_IFR_OP_HEADER Header
;
877 EFI_IFR_QUESTION_HEADER Question
;
881 typedef struct _EFI_IFR_REF2
{
882 EFI_IFR_OP_HEADER Header
;
883 EFI_IFR_QUESTION_HEADER Question
;
885 EFI_QUESTION_ID QuestionId
;
888 typedef struct _EFI_IFR_REF3
{
889 EFI_IFR_OP_HEADER Header
;
890 EFI_IFR_QUESTION_HEADER Question
;
892 EFI_QUESTION_ID QuestionId
;
896 typedef struct _EFI_IFR_REF4
{
897 EFI_IFR_OP_HEADER Header
;
898 EFI_IFR_QUESTION_HEADER Question
;
900 EFI_QUESTION_ID QuestionId
;
902 EFI_STRING_ID DevicePath
;
905 typedef struct _EFI_IFR_RESET_BUTTON
{
906 EFI_IFR_OP_HEADER Header
;
907 EFI_IFR_STATEMENT_HEADER Statement
;
908 EFI_DEFAULT_ID DefaultId
;
909 } EFI_IFR_RESET_BUTTON
;
911 typedef struct _EFI_IFR_ACTION
{
912 EFI_IFR_OP_HEADER Header
;
913 EFI_IFR_QUESTION_HEADER Question
;
914 EFI_STRING_ID QuestionConfig
;
917 typedef struct _EFI_IFR_ACTION_1
{
918 EFI_IFR_OP_HEADER Header
;
919 EFI_IFR_QUESTION_HEADER Question
;
922 typedef struct _EFI_IFR_DATE
{
923 EFI_IFR_OP_HEADER Header
;
924 EFI_IFR_QUESTION_HEADER Question
;
929 // Flags that describe the behavior of the question.
931 #define EFI_QF_DATE_YEAR_SUPPRESS 0x01
932 #define EFI_QF_DATE_MONTH_SUPPRESS 0x02
933 #define EFI_QF_DATE_DAY_SUPPRESS 0x04
935 #define EFI_QF_DATE_STORAGE 0x30
936 #define QF_DATE_STORAGE_NORMAL 0x00
937 #define QF_DATE_STORAGE_TIME 0x10
938 #define QF_DATE_STORAGE_WAKEUP 0x20
963 typedef struct _EFI_IFR_NUMERIC
{
964 EFI_IFR_OP_HEADER Header
;
965 EFI_IFR_QUESTION_HEADER Question
;
967 MINMAXSTEP_DATA data
;
971 // Flags related to the numeric question
973 #define EFI_IFR_NUMERIC_SIZE 0x03
974 #define EFI_IFR_NUMERIC_SIZE_1 0x00
975 #define EFI_IFR_NUMERIC_SIZE_2 0x01
976 #define EFI_IFR_NUMERIC_SIZE_4 0x02
977 #define EFI_IFR_NUMERIC_SIZE_8 0x03
979 #define EFI_IFR_DISPLAY 0x30
980 #define EFI_IFR_DISPLAY_INT_DEC 0x00
981 #define EFI_IFR_DISPLAY_UINT_DEC 0x10
982 #define EFI_IFR_DISPLAY_UINT_HEX 0x20
984 typedef struct _EFI_IFR_ONE_OF
{
985 EFI_IFR_OP_HEADER Header
;
986 EFI_IFR_QUESTION_HEADER Question
;
988 MINMAXSTEP_DATA data
;
991 typedef struct _EFI_IFR_STRING
{
992 EFI_IFR_OP_HEADER Header
;
993 EFI_IFR_QUESTION_HEADER Question
;
999 #define EFI_IFR_STRING_MULTI_LINE 0x01
1001 typedef struct _EFI_IFR_PASSWORD
{
1002 EFI_IFR_OP_HEADER Header
;
1003 EFI_IFR_QUESTION_HEADER Question
;
1008 typedef struct _EFI_IFR_ORDERED_LIST
{
1009 EFI_IFR_OP_HEADER Header
;
1010 EFI_IFR_QUESTION_HEADER Question
;
1011 UINT8 MaxContainers
;
1013 } EFI_IFR_ORDERED_LIST
;
1015 #define EFI_IFR_UNIQUE_SET 0x01
1016 #define EFI_IFR_NO_EMPTY_SET 0x02
1018 typedef struct _EFI_IFR_TIME
{
1019 EFI_IFR_OP_HEADER Header
;
1020 EFI_IFR_QUESTION_HEADER Question
;
1025 // A bit-mask that determines which unique settings are active for this opcode.
1027 #define QF_TIME_HOUR_SUPPRESS 0x01
1028 #define QF_TIME_MINUTE_SUPPRESS 0x02
1029 #define QF_TIME_SECOND_SUPPRESS 0x04
1031 #define QF_TIME_STORAGE 0x30
1032 #define QF_TIME_STORAGE_NORMAL 0x00
1033 #define QF_TIME_STORAGE_TIME 0x10
1034 #define QF_TIME_STORAGE_WAKEUP 0x20
1036 typedef struct _EFI_IFR_DISABLE_IF
{
1037 EFI_IFR_OP_HEADER Header
;
1038 } EFI_IFR_DISABLE_IF
;
1040 typedef struct _EFI_IFR_SUPPRESS_IF
{
1041 EFI_IFR_OP_HEADER Header
;
1042 } EFI_IFR_SUPPRESS_IF
;
1044 typedef struct _EFI_IFR_GRAY_OUT_IF
{
1045 EFI_IFR_OP_HEADER Header
;
1046 } EFI_IFR_GRAY_OUT_IF
;
1048 typedef struct _EFI_IFR_INCONSISTENT_IF
{
1049 EFI_IFR_OP_HEADER Header
;
1050 EFI_STRING_ID Error
;
1051 } EFI_IFR_INCONSISTENT_IF
;
1053 typedef struct _EFI_IFR_NO_SUBMIT_IF
{
1054 EFI_IFR_OP_HEADER Header
;
1055 EFI_STRING_ID Error
;
1056 } EFI_IFR_NO_SUBMIT_IF
;
1058 typedef struct _EFI_IFR_REFRESH
{
1059 EFI_IFR_OP_HEADER Header
;
1060 UINT8 RefreshInterval
;
1063 typedef struct _EFI_IFR_VARSTORE_DEVICE
{
1064 EFI_IFR_OP_HEADER Header
;
1065 EFI_STRING_ID DevicePath
;
1066 } EFI_IFR_VARSTORE_DEVICE
;
1068 typedef struct _EFI_IFR_ONE_OF_OPTION
{
1069 EFI_IFR_OP_HEADER Header
;
1070 EFI_STRING_ID Option
;
1073 EFI_IFR_TYPE_VALUE Value
;
1074 } EFI_IFR_ONE_OF_OPTION
;
1077 // Types of the option's value.
1079 #define EFI_IFR_TYPE_NUM_SIZE_8 0x00
1080 #define EFI_IFR_TYPE_NUM_SIZE_16 0x01
1081 #define EFI_IFR_TYPE_NUM_SIZE_32 0x02
1082 #define EFI_IFR_TYPE_NUM_SIZE_64 0x03
1083 #define EFI_IFR_TYPE_BOOLEAN 0x04
1084 #define EFI_IFR_TYPE_TIME 0x05
1085 #define EFI_IFR_TYPE_DATE 0x06
1086 #define EFI_IFR_TYPE_STRING 0x07
1087 #define EFI_IFR_TYPE_OTHER 0x08
1088 #define EFI_IFR_TYPE_UNDEFINED 0x09
1089 #define EFI_IFR_TYPE_ACTION 0x0A
1090 #define EFI_IFR_TYPE_BUFFER 0x0B
1092 #define EFI_IFR_OPTION_DEFAULT 0x10
1093 #define EFI_IFR_OPTION_DEFAULT_MFG 0x20
1095 typedef struct _EFI_IFR_GUID
{
1096 EFI_IFR_OP_HEADER Header
;
1098 //Optional Data Follows
1101 typedef struct _EFI_IFR_DUP
{
1102 EFI_IFR_OP_HEADER Header
;
1105 typedef struct _EFI_IFR_EQ_ID_ID
{
1106 EFI_IFR_OP_HEADER Header
;
1107 EFI_QUESTION_ID QuestionId1
;
1108 EFI_QUESTION_ID QuestionId2
;
1111 typedef struct _EFI_IFR_EQ_ID_VAL
{
1112 EFI_IFR_OP_HEADER Header
;
1113 EFI_QUESTION_ID QuestionId
;
1115 } EFI_IFR_EQ_ID_VAL
;
1117 typedef struct _EFI_IFR_EQ_ID_LIST
{
1118 EFI_IFR_OP_HEADER Header
;
1119 EFI_QUESTION_ID QuestionId
;
1121 UINT16 ValueList
[1];
1122 } EFI_IFR_EQ_ID_LIST
;
1124 typedef struct _EFI_IFR_UINT8
{
1125 EFI_IFR_OP_HEADER Header
;
1129 typedef struct _EFI_IFR_UINT16
{
1130 EFI_IFR_OP_HEADER Header
;
1134 typedef struct _EFI_IFR_UINT32
{
1135 EFI_IFR_OP_HEADER Header
;
1139 typedef struct _EFI_IFR_UINT64
{
1140 EFI_IFR_OP_HEADER Header
;
1144 typedef struct _EFI_IFR_QUESTION_REF1
{
1145 EFI_IFR_OP_HEADER Header
;
1146 EFI_QUESTION_ID QuestionId
;
1147 } EFI_IFR_QUESTION_REF1
;
1149 typedef struct _EFI_IFR_QUESTION_REF2
{
1150 EFI_IFR_OP_HEADER Header
;
1151 } EFI_IFR_QUESTION_REF2
;
1153 typedef struct _EFI_IFR_QUESTION_REF3
{
1154 EFI_IFR_OP_HEADER Header
;
1155 } EFI_IFR_QUESTION_REF3
;
1157 typedef struct _EFI_IFR_QUESTION_REF3_2
{
1158 EFI_IFR_OP_HEADER Header
;
1159 EFI_STRING_ID DevicePath
;
1160 } EFI_IFR_QUESTION_REF3_2
;
1162 typedef struct _EFI_IFR_QUESTION_REF3_3
{
1163 EFI_IFR_OP_HEADER Header
;
1164 EFI_STRING_ID DevicePath
;
1166 } EFI_IFR_QUESTION_REF3_3
;
1168 typedef struct _EFI_IFR_RULE_REF
{
1169 EFI_IFR_OP_HEADER Header
;
1173 typedef struct _EFI_IFR_STRING_REF1
{
1174 EFI_IFR_OP_HEADER Header
;
1175 EFI_STRING_ID StringId
;
1176 } EFI_IFR_STRING_REF1
;
1178 typedef struct _EFI_IFR_STRING_REF2
{
1179 EFI_IFR_OP_HEADER Header
;
1180 } EFI_IFR_STRING_REF2
;
1182 typedef struct _EFI_IFR_THIS
{
1183 EFI_IFR_OP_HEADER Header
;
1186 typedef struct _EFI_IFR_TRUE
{
1187 EFI_IFR_OP_HEADER Header
;
1190 typedef struct _EFI_IFR_FALSE
{
1191 EFI_IFR_OP_HEADER Header
;
1194 typedef struct _EFI_IFR_ONE
{
1195 EFI_IFR_OP_HEADER Header
;
1198 typedef struct _EFI_IFR_ONES
{
1199 EFI_IFR_OP_HEADER Header
;
1202 typedef struct _EFI_IFR_ZERO
{
1203 EFI_IFR_OP_HEADER Header
;
1206 typedef struct _EFI_IFR_UNDEFINED
{
1207 EFI_IFR_OP_HEADER Header
;
1208 } EFI_IFR_UNDEFINED
;
1210 typedef struct _EFI_IFR_VERSION
{
1211 EFI_IFR_OP_HEADER Header
;
1214 typedef struct _EFI_IFR_LENGTH
{
1215 EFI_IFR_OP_HEADER Header
;
1218 typedef struct _EFI_IFR_NOT
{
1219 EFI_IFR_OP_HEADER Header
;
1222 typedef struct _EFI_IFR_BITWISE_NOT
{
1223 EFI_IFR_OP_HEADER Header
;
1224 } EFI_IFR_BITWISE_NOT
;
1226 typedef struct _EFI_IFR_TO_BOOLEAN
{
1227 EFI_IFR_OP_HEADER Header
;
1228 } EFI_IFR_TO_BOOLEAN
;
1231 // For EFI_IFR_TO_STRING, when converting from
1232 // unsigned integers, these flags control the format:
1233 // 0 = unsigned decimal
1234 // 1 = signed decimal
1235 // 2 = hexadecimal (lower-case alpha)
1236 // 3 = hexadecimal (upper-case alpha)
1238 #define EFI_IFR_STRING_UNSIGNED_DEC 0
1239 #define EFI_IFR_STRING_SIGNED_DEC 1
1240 #define EFI_IFR_STRING_LOWERCASE_HEX 2
1241 #define EFI_IFR_STRING_UPPERCASE_HEX 3
1243 // When converting from a buffer, these flags control the format:
1247 #define EFI_IFR_STRING_ASCII 0
1248 #define EFI_IFR_STRING_UNICODE 8
1250 typedef struct _EFI_IFR_TO_STRING
{
1251 EFI_IFR_OP_HEADER Header
;
1253 } EFI_IFR_TO_STRING
;
1255 typedef struct _EFI_IFR_TO_UINT
{
1256 EFI_IFR_OP_HEADER Header
;
1259 typedef struct _EFI_IFR_TO_UPPER
{
1260 EFI_IFR_OP_HEADER Header
;
1263 typedef struct _EFI_IFR_TO_LOWER
{
1264 EFI_IFR_OP_HEADER Header
;
1267 typedef struct _EFI_IFR_ADD
{
1268 EFI_IFR_OP_HEADER Header
;
1271 typedef struct _EFI_IFR_AND
{
1272 EFI_IFR_OP_HEADER Header
;
1275 typedef struct _EFI_IFR_BITWISE_AND
{
1276 EFI_IFR_OP_HEADER Header
;
1277 } EFI_IFR_BITWISE_AND
;
1279 typedef struct _EFI_IFR_BITWISE_OR
{
1280 EFI_IFR_OP_HEADER Header
;
1281 } EFI_IFR_BITWISE_OR
;
1283 typedef struct _EFI_IFR_CATENATE
{
1284 EFI_IFR_OP_HEADER Header
;
1287 typedef struct _EFI_IFR_DIVIDE
{
1288 EFI_IFR_OP_HEADER Header
;
1291 typedef struct _EFI_IFR_EQUAL
{
1292 EFI_IFR_OP_HEADER Header
;
1295 typedef struct _EFI_IFR_GREATER_EQUAL
{
1296 EFI_IFR_OP_HEADER Header
;
1297 } EFI_IFR_GREATER_EQUAL
;
1299 typedef struct _EFI_IFR_GREATER_THAN
{
1300 EFI_IFR_OP_HEADER Header
;
1301 } EFI_IFR_GREATER_THAN
;
1303 typedef struct _EFI_IFR_LESS_EQUAL
{
1304 EFI_IFR_OP_HEADER Header
;
1305 } EFI_IFR_LESS_EQUAL
;
1307 typedef struct _EFI_IFR_LESS_THAN
{
1308 EFI_IFR_OP_HEADER Header
;
1309 } EFI_IFR_LESS_THAN
;
1311 typedef struct _EFI_IFR_MATCH
{
1312 EFI_IFR_OP_HEADER Header
;
1315 typedef struct _EFI_IFR_MULTIPLY
{
1316 EFI_IFR_OP_HEADER Header
;
1319 typedef struct _EFI_IFR_MODULO
{
1320 EFI_IFR_OP_HEADER Header
;
1323 typedef struct _EFI_IFR_NOT_EQUAL
{
1324 EFI_IFR_OP_HEADER Header
;
1325 } EFI_IFR_NOT_EQUAL
;
1327 typedef struct _EFI_IFR_OR
{
1328 EFI_IFR_OP_HEADER Header
;
1331 typedef struct _EFI_IFR_SHIFT_LEFT
{
1332 EFI_IFR_OP_HEADER Header
;
1333 } EFI_IFR_SHIFT_LEFT
;
1335 typedef struct _EFI_IFR_SHIFT_RIGHT
{
1336 EFI_IFR_OP_HEADER Header
;
1337 } EFI_IFR_SHIFT_RIGHT
;
1339 typedef struct _EFI_IFR_SUBTRACT
{
1340 EFI_IFR_OP_HEADER Header
;
1343 typedef struct _EFI_IFR_CONDITIONAL
{
1344 EFI_IFR_OP_HEADER Header
;
1345 } EFI_IFR_CONDITIONAL
;
1348 // Flags governing the matching criteria of EFI_IFR_FIND
1350 #define EFI_IFR_FF_CASE_SENSITIVE 0x00
1351 #define EFI_IFR_FF_CASE_INSENSITIVE 0x01
1353 typedef struct _EFI_IFR_FIND
{
1354 EFI_IFR_OP_HEADER Header
;
1358 typedef struct _EFI_IFR_MID
{
1359 EFI_IFR_OP_HEADER Header
;
1362 typedef struct _EFI_IFR_TOKEN
{
1363 EFI_IFR_OP_HEADER Header
;
1367 // Flags specifying whether to find the first matching string
1368 // or the first non-matching string.
1370 #define EFI_IFR_FLAGS_FIRST_MATCHING 0x00
1371 #define EFI_IFR_FLAGS_FIRST_NON_MATCHING 0x01
1373 typedef struct _EFI_IFR_SPAN
{
1374 EFI_IFR_OP_HEADER Header
;
1378 typedef struct _EFI_IFR_SECURITY
{
1380 /// Standard opcode header, where Header.Op = EFI_IFR_SECURITY_OP.
1382 EFI_IFR_OP_HEADER Header
;
1384 /// Security permission level.
1386 EFI_GUID Permissions
;
1389 typedef struct _EFI_IFR_FORM_MAP_METHOD
{
1391 /// The string identifier which provides the human-readable name of
1392 /// the configuration method for this standards map form.
1394 EFI_STRING_ID MethodTitle
;
1396 /// Identifier which uniquely specifies the configuration methods
1397 /// associated with this standards map form.
1399 EFI_GUID MethodIdentifier
;
1400 } EFI_IFR_FORM_MAP_METHOD
;
1402 typedef struct _EFI_IFR_FORM_MAP
{
1404 /// The sequence that defines the type of opcode as well as the length
1405 /// of the opcode being defined. Header.OpCode = EFI_IFR_FORM_MAP_OP.
1407 EFI_IFR_OP_HEADER Header
;
1409 /// The unique identifier for this particular form.
1413 /// One or more configuration method's name and unique identifier.
1415 EFI_IFR_FORM_MAP_METHOD Methods
[1];
1418 typedef struct _EFI_IFR_SET
{
1420 /// The sequence that defines the type of opcode as well as the length
1421 /// of the opcode being defined. Header.OpCode = EFI_IFR_SET_OP.
1423 EFI_IFR_OP_HEADER Header
;
1425 /// Specifies the identifier of a previously declared variable store to
1426 /// use when storing the question's value.
1428 EFI_VARSTORE_ID VarStoreId
;
1431 /// A 16-bit Buffer Storage offset.
1433 EFI_STRING_ID VarName
;
1435 /// A Name Value or EFI Variable name (VarName).
1441 typedef struct _EFI_IFR_GET
{
1443 /// The sequence that defines the type of opcode as well as the length
1444 /// of the opcode being defined. Header.OpCode = EFI_IFR_GET_OP.
1446 EFI_IFR_OP_HEADER Header
;
1448 /// Specifies the identifier of a previously declared variable store to
1449 /// use when retrieving the value.
1451 EFI_VARSTORE_ID VarStoreId
;
1454 /// A 16-bit Buffer Storage offset.
1456 EFI_STRING_ID VarName
;
1458 /// A Name Value or EFI Variable name (VarName).
1463 /// Specifies the type used for storage.
1468 typedef struct _EFI_IFR_READ
{
1469 EFI_IFR_OP_HEADER Header
;
1472 typedef struct _EFI_IFR_WRITE
{
1473 EFI_IFR_OP_HEADER Header
;
1476 typedef struct _EFI_IFR_MAP
{
1477 EFI_IFR_OP_HEADER Header
;
1480 // Definitions for Keyboard Package
1481 // Releated definitions are in Section of EFI_HII_DATABASE_PROTOCOL
1485 /// Each enumeration values maps a physical key on a keyboard.
1598 CHAR16 ShiftedUnicode
;
1599 CHAR16 AltGrUnicode
;
1600 CHAR16 ShiftedAltGrUnicode
;
1602 UINT16 AffectedAttribute
;
1603 } EFI_KEY_DESCRIPTOR
;
1606 /// A key which is affected by all the standard shift modifiers.
1607 /// Most keys would be expected to have this bit active.
1609 #define EFI_AFFECTED_BY_STANDARD_SHIFT 0x0001
1612 /// This key is affected by the caps lock so that if a keyboard driver
1613 /// would need to disambiguate between a key which had a "1" defined
1614 /// versus an "a" character. Having this bit turned on would tell
1615 /// the keyboard driver to use the appropriate shifted state or not.
1617 #define EFI_AFFECTED_BY_CAPS_LOCK 0x0002
1620 /// Similar to the case of CAPS lock, if this bit is active, the key
1621 /// is affected by the num lock being turned on.
1623 #define EFI_AFFECTED_BY_NUM_LOCK 0x0004
1626 UINT16 LayoutLength
;
1628 UINT32 LayoutDescriptorStringOffset
;
1629 UINT8 DescriptorCount
;
1630 // EFI_KEY_DESCRIPTOR Descriptors[];
1631 } EFI_HII_KEYBOARD_LAYOUT
;
1634 EFI_HII_PACKAGE_HEADER Header
;
1636 // EFI_HII_KEYBOARD_LAYOUT Layout[];
1637 } EFI_HII_KEYBOARD_PACKAGE_HDR
;
1642 #define EFI_NULL_MODIFIER 0x0000
1643 #define EFI_LEFT_CONTROL_MODIFIER 0x0001
1644 #define EFI_RIGHT_CONTROL_MODIFIER 0x0002
1645 #define EFI_LEFT_ALT_MODIFIER 0x0003
1646 #define EFI_RIGHT_ALT_MODIFIER 0x0004
1647 #define EFI_ALT_GR_MODIFIER 0x0005
1648 #define EFI_INSERT_MODIFIER 0x0006
1649 #define EFI_DELETE_MODIFIER 0x0007
1650 #define EFI_PAGE_DOWN_MODIFIER 0x0008
1651 #define EFI_PAGE_UP_MODIFIER 0x0009
1652 #define EFI_HOME_MODIFIER 0x000A
1653 #define EFI_END_MODIFIER 0x000B
1654 #define EFI_LEFT_SHIFT_MODIFIER 0x000C
1655 #define EFI_RIGHT_SHIFT_MODIFIER 0x000D
1656 #define EFI_CAPS_LOCK_MODIFIER 0x000E
1657 #define EFI_NUM_LOCK_MODIFIER 0x000F
1658 #define EFI_LEFT_ARROW_MODIFIER 0x0010
1659 #define EFI_RIGHT_ARROW_MODIFIER 0x0011
1660 #define EFI_DOWN_ARROW_MODIFIER 0x0012
1661 #define EFI_UP_ARROW_MODIFIER 0x0013
1662 #define EFI_NS_KEY_MODIFIER 0x0014
1663 #define EFI_NS_KEY_DEPENDENCY_MODIFIER 0x0015
1664 #define EFI_FUNCTION_KEY_ONE_MODIFIER 0x0016
1665 #define EFI_FUNCTION_KEY_TWO_MODIFIER 0x0017
1666 #define EFI_FUNCTION_KEY_THREE_MODIFIER 0x0018
1667 #define EFI_FUNCTION_KEY_FOUR_MODIFIER 0x0019
1668 #define EFI_FUNCTION_KEY_FIVE_MODIFIER 0x001A
1669 #define EFI_FUNCTION_KEY_SIX_MODIFIER 0x001B
1670 #define EFI_FUNCTION_KEY_SEVEN_MODIFIER 0x001C
1671 #define EFI_FUNCTION_KEY_EIGHT_MODIFIER 0x001D
1672 #define EFI_FUNCTION_KEY_NINE_MODIFIER 0x001E
1673 #define EFI_FUNCTION_KEY_TEN_MODIFIER 0x001F
1674 #define EFI_FUNCTION_KEY_ELEVEN_MODIFIER 0x0020
1675 #define EFI_FUNCTION_KEY_TWELVE_MODIFIER 0x0021
1678 // Keys that have multiple control functions based on modifier
1679 // settings are handled in the keyboard driver implementation.
1680 // For instance, PRINT_KEY might have a modifier held down and
1681 // is still a nonprinting character, but might have an alternate
1682 // control function like SYSREQUEST
1684 #define EFI_PRINT_MODIFIER 0x0022
1685 #define EFI_SYS_REQUEST_MODIFIER 0x0023
1686 #define EFI_SCROLL_LOCK_MODIFIER 0x0024
1687 #define EFI_PAUSE_MODIFIER 0x0025
1688 #define EFI_BREAK_MODIFIER 0x0026
1690 #define EFI_LEFT_LOGO_MODIFIER 0x0027
1691 #define EFI_RIGHT_LOGO_MODIFIER 0x0028
1692 #define EFI_MENU_MODIFIER 0x0029
1699 /// References to string tokens must use this macro to enable scanning for
1703 /// STRING_TOKEN is not defined in UEFI specification. But it is placed
1704 /// here for the easy access by C files and VFR source files.
1706 #define STRING_TOKEN(t) t