vfr.vfr
来自「EFI BIOS是Intel提出的下一代的BIOS标准。这里上传的Edk源代码是」· VFR 代码 · 共 623 行 · 第 1/2 页
VFR
623 行
// *++
//
// Copyright (c) 2004, Intel Corporation
// All rights reserved. This program and the accompanying materials
// are licensed and made available under the terms and conditions of the BSD License
// which accompanies this distribution. The full text of the license may be found at
// http://opensource.org/licenses/bsd-license.php
//
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
//
// Module Name:
//
// Vfr.vfr
//
// Abstract:
//
// Sample Setup formset
//
// Revision History:
//
// --*/
#include "DriverSampleStrDefs.h"
#include "NVDataStruc.h"
typedef struct {
UINT8 Field8;
UINT16 Field16;
UINT8 OrderedList[3];
} MyIfrNVData2;
typedef struct {
UINT8 Field8;
UINT16 Field16;
UINT8 OrderedList[3];
} MyIfrNVData3;
#define MY_TEXT_KEY 0x100
#define LABEL_1_VALUE 0x01
#define LABEL_2_VALUE 0x1000
#define LABEL_UPDATE_BBS 0x2222
#define LABEL_END_UPDATE_BBS 0x2223
formset
guid = FORMSET_GUID,
title = STRING_TOKEN(STR_FORM_SET_TITLE),
help = STRING_TOKEN(STR_FORM_SET_TITLE_HELP),
class = 0x10,
subclass = 0,
varstore MyIfrNVData2, key = 0x1234, name = MY_DATA2, guid = FORMSET_GUID;
varstore MyIfrNVData3, key = 0x4321, name = MY_DATA3, guid = FORMSET_GUID;
form formid = 1,
title = STRING_TOKEN(STR_FORM1_TITLE); // note formid is a variable (for readability) (UINT16) - also added Form to the line to signify the Op-Code
subtitle text = STRING_TOKEN(STR_SUBTITLE_TEXT);
subtitle text = STRING_TOKEN(STR_SUBTITLE_TEXT2);
banner
title = STRING_TOKEN(STR_BANNER_TITLE),
line 1,
align center;
banner
title = STRING_TOKEN(STR_BANNER_TITLE),
line 2,
align left;
banner
title = STRING_TOKEN(STR_BANNER_TITLE),
line 2,
align right;
text
help = STRING_TOKEN(STR_TEXT_HELP),
text = STRING_TOKEN(STR_CPU_STRING),
text = STRING_TOKEN(STR_CPU_STRING2),
flags = 0,
key = 0;
text
help = STRING_TOKEN(STR_EXIT_TEXT),
text = STRING_TOKEN(STR_EXIT_TEXT),
text = STRING_TOKEN(STR_EXIT_TEXT),
flags = INTERACTIVE,
key = 0x1237;
oneof varid = MyIfrNVData.SuppressGrayOutSomething,
prompt = STRING_TOKEN(STR_ONE_OF_PROMPT),
help = STRING_TOKEN(STR_ONE_OF_HELP),
option text = STRING_TOKEN(STR_ONE_OF_TEXT4), value = 0x0, flags = 0;
option text = STRING_TOKEN(STR_ONE_OF_TEXT5), value = 0x1, flags = 0;
option text = STRING_TOKEN(STR_ONE_OF_TEXT6), value = 0x2, flags = DEFAULT;
endoneof;
oneof varid = MyIfrNVData.BootOrderLarge,
prompt = STRING_TOKEN(STR_ONE_OF_PROMPT),
help = STRING_TOKEN(STR_ONE_OF_HELP),
option text = STRING_TOKEN(STR_BOOT_ORDER1), value = 0x0, flags = INTERACTIVE, key = 1;
option text = STRING_TOKEN(STR_BOOT_ORDER2), value = 0x1, flags = INTERACTIVE | DEFAULT, key = 2;
endoneof;
grayoutif ideqval MyIfrNVData.SuppressGrayOutSomething == 0x1;
suppressif ideqval MyIfrNVData.SuppressGrayOutSomething == 0x0;
label 0;
checkbox varid = MyIfrNVData.ChooseToActivateNuclearWeaponry,
prompt = STRING_TOKEN(STR_CHECK_BOX_PROMPT),
help = STRING_TOKEN(STR_CHECK_BOX_HELP),
flags = 1, // Flags behavior for checkbox is overloaded so that it equals a DEFAULT value. 1 = ON, 0 = off
key = 0,
endcheckbox;
endif;
//
// Ordered list:
// sizeof(MyIfrNVData) storage must be UINT8 array, and
// size written for the variable must be size of the entire
// variable.
//
//
suppressif ideqval MyIfrNVData.SuppressGrayOutSomething == 0x0;
label LABEL_UPDATE_BBS;
orderedlist
varid = MyIfrNVData.BootOrder,
prompt = STRING_TOKEN(STR_BOOT_OPTIONS),
help = STRING_TOKEN(STR_NULL_STRING),
option text = STRING_TOKEN(STR_BOOT_OPTION2), value = 2, flags = RESET_REQUIRED;
option text = STRING_TOKEN(STR_BOOT_OPTION1), value = 1, flags = RESET_REQUIRED;
option text = STRING_TOKEN(STR_BOOT_OPTION3), value = 3, flags = RESET_REQUIRED;
option text = STRING_TOKEN(STR_BOOT_OPTION4), value = 4, flags = RESET_REQUIRED;
endlist;
label LABEL_END_UPDATE_BBS;
endif;
suppressif ideqval MyIfrNVData.SuppressGrayOutSomething == 0x2;
orderedlist
varid = MyIfrNVData.OrderedList,
prompt = STRING_TOKEN(STR_TEST_OPCODE),
help = STRING_TOKEN(STR_TEXT_HELP),
option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 4, flags = RESET_REQUIRED;
option text = STRING_TOKEN(STR_ONE_OF_TEXT2), value = 3, flags = RESET_REQUIRED;
option text = STRING_TOKEN(STR_ONE_OF_TEXT3), value = 2, flags = RESET_REQUIRED;
option text = STRING_TOKEN(STR_TEXT_HELP), value = 1, flags = RESET_REQUIRED;
endlist;
endif;
label 100;
goto 0x1234,
prompt = STRING_TOKEN(STR_GOTO_DYNAMIC),
help = STRING_TOKEN(STR_GOTO_HELP),
flags = INTERACTIVE,
key = 0x1234;
goto 0x1234,
prompt = STRING_TOKEN(STR_GOTO_DYNAMIC2),
help = STRING_TOKEN(STR_GOTO_HELP),
flags = INTERACTIVE,
key = 0x1235;
//
// VARSTORE tests
//
// Till now, been using variable NvData (must be reserved)
// now we do a varselect for variable NvData3
inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),
ideqid MyIfrNVData3.Field16 == MyIfrNVData3.Field16
endif;
// now we do a varselect_pair for variable NvData2 and NvData3
inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),
ideqid MyIfrNVData2.Field16 == MyIfrNVData3.Field16
endif;
// now we do a varselect_pair for variable NvData and NvData2
// inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),
// ideqid MyIfrNVData2.Field16 == MyIfrNVData.TestLateCheck
// endif;
inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),
ideqid MyIfrNVData.TestLateCheck == MyIfrNVData.TestLateCheck2
endif;
oneof varid = MyIfrNVData.TestLateCheck,
prompt = STRING_TOKEN(STR_TEST_OPCODE),
help = STRING_TOKEN(STR_ONE_OF_HELP),
option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 0, flags = LATE_CHECK | RESET_REQUIRED;
option text = STRING_TOKEN(STR_ONE_OF_TEXT2), value = 1, flags = LATE_CHECK | DEFAULT | RESET_REQUIRED;
endoneof;
oneof varid = MyIfrNVData.TestLateCheck2,
prompt = STRING_TOKEN(STR_TEST_OPCODE2),
help = STRING_TOKEN(STR_ONE_OF_HELP),
option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 0, flags = LATE_CHECK | DEFAULT | RESET_REQUIRED;
option text = STRING_TOKEN(STR_ONE_OF_TEXT2), value = 1, flags = LATE_CHECK | RESET_REQUIRED;
endoneof;
oneof varid = MyIfrNVData.QuestionAboutTreeHugging,
prompt = STRING_TOKEN(STR_ONE_OF_PROMPT),
help = STRING_TOKEN(STR_ONE_OF_HELP),
option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 0, flags = RESET_REQUIRED;
option text = STRING_TOKEN(STR_ONE_OF_TEXT2), value = 1, flags = DEFAULT | RESET_REQUIRED;
option text = STRING_TOKEN(STR_ONE_OF_TEXT3), value = 0x03, flags = RESET_REQUIRED;
endoneof;
string varid = MyIfrNVData.MyStringData,
prompt = STRING_TOKEN(STR_MY_STRING_PROMPT2),
help = STRING_TOKEN(STR_MY_STRING_HELP2),
flags = INTERACTIVE,
key = 0x1234,
minsize = 6,
maxsize = 0x14,
endstring;
text
help = STRING_TOKEN(STR_GRAYOUT_TEST),
text = STRING_TOKEN(STR_GRAYOUT_TEST),
text = STRING_TOKEN(STR_GRAYOUT_TEST),
flags = INTERACTIVE,
key = 0x1555;
text
help = STRING_TOKEN(STR_SUPPRESS_TEST),
text = STRING_TOKEN(STR_SUPPRESS_TEST),
text = STRING_TOKEN(STR_SUPPRESS_TEST),
flags = INTERACTIVE,
key = 0x1556;
text
help = STRING_TOKEN(STR_CLEAR_TEST),
text = STRING_TOKEN(STR_CLEAR_TEST),
text = STRING_TOKEN(STR_CLEAR_TEST),
flags = INTERACTIVE,
key = 0x1557;
grayoutif vareqval var(VAR_EQ_TEST_NAME) == 0x1;
suppressif vareqval var(VAR_EQ_TEST_NAME) == 0x1000;
label 30;
checkbox varid = MyIfrNVData.ChooseToActivateNuclearWeaponry,
prompt = STRING_TOKEN(STR_CHECK_BOX_PROMPT),
help = STRING_TOKEN(STR_CHECK_BOX_HELP),
flags = 1,
key = 0,
endcheckbox;
endif;
numeric varid = MyIfrNVData.HowOldAreYouInYearsManual,
prompt = STRING_TOKEN(STR_NUMERIC_MANUAL_PROMPT),
help = STRING_TOKEN(STR_NUMERIC_HELP0),
minimum = 0,
maximum = 0xf0, // 0xf0 = 240 in decimal
step = 0, // Stepping of 0 equates to a manual entering
// of a value, otherwise it will auto-increment
// with a left/right arrow
default = 21,
endnumeric;
numeric varid = MyIfrNVData.HowTallAreYouManual,
prompt = STRING_TOKEN(STR_TALL_MANUAL_PROMPT),
help = STRING_TOKEN(STR_NUMERIC_HELP1),
minimum = 0,
maximum = 300,
step = 0, // Stepping of 0 equates to a manual entering
// of a value, otherwise it will auto-increment
// with a left/right arrow
default = 175,
endnumeric;
inventory
help = STRING_TOKEN(STR_INVENTORY_HELP),
text = STRING_TOKEN(STR_INVENTORY_TEXT1),
text = STRING_TOKEN(STR_INVENTORY_TEXT2);
restore defaults,
formid = 4,
prompt = STRING_TOKEN(STR_RESTORE_DEFAULTS_PROMPT),
help = STRING_TOKEN(STR_RESTORE_DEFAULTS_HELP),
flags = 0,
key = 0;
save defaults,
formid = 4,
prompt = STRING_TOKEN(STR_SAVE_DEFAULTS_PROMPT),
help = STRING_TOKEN(STR_SAVE_DEFAULTS_HELP),
flags = 0,
key = 0;
//
// Case with no flags or key
//
save defaults,
formid = 4,
prompt = STRING_TOKEN(STR_SAVE_DEFAULTS_PROMPT),
help = STRING_TOKEN(STR_SAVE_DEFAULTS_HELP);
//
// Case with no key
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?