UEFI原理与编程实践--GUI之Setup界面分析一_潇洒Anthony的博客-程序员ITS304_ideqval

技术标签: UEFI  

formset &endformset

表单集,Setup设置界面的一个页面,该页面内的内容都需要放在表单集内

Example:
	formset guid  = MAIN_FORM_SET_GUID,
    	title     = STRING_TOKEN(STR_MAIN),
    	help      = STRING_TOKEN(STR_MAIN_HELP),
    	class     = MAIN_FORM_SET_CLASS,
    	subclass  = 0,
		….
	endformset;

Definitions:
guid: GUID for this formset.
title: Title strings for this formset.
help: help strings for this formset.
class and subclass: can be used for DXE driver.

form & endform

表单,包含在表单集内:

form formid = AUTO_ID(MAIN_MAIN),
        title = STRING_TOKEN(STR_MAIN);
	…..	
	endform.

varstore

用于定义设置选项将引用的变量,varstore语法需要放在formsetform之间

varstore VARIABLE_STRUCTURE,
        key/varid   = VARIABLE_ID,
        name  = VARIABLE_NAME,
        guid  = VARIABLE_GUID;

VARIABLE_STRUCTURE:保存setup variable的一个结构体

VARIABLE_ID:EFI_VARSTORE_ID  VarStoreId使用

VARIABLE_NAME:相当于结构体的定义:VARIABLE_STRUCTURE  VARIABLE_NAME

VARIABLE_NAME.OnboardVGA=1;

goto

用于转到另一个表单页面,就像超链接一样,转到表单和尾页之间。

Example:
	goto FORM_ID, 
	prompt = STRING_TOKEN(STR_FORM),
	help = STRING_TOKEN(STR_FORM_HELP);
	Definitions:
		FORM_ID: define which form will display.
		prompt: Strings for the goto syntax’s Name.
		help: help strings.

subtitle

用于在页面中显示字符串,需要放在表单和尾端表单之间。

Example:
	subtitle text = STRING_TOKEN(STR_SUB_TITLE);
	Definitions:
		text: text strings which will display.

text 

用于在页面中显示文本字符串,需要放在表单和尾端表单之间

Example:
     text 
        help   = STRING_TOKEN(STR_MEMORY_SIZE_HELP),
        text   = STRING_TOKEN(STR_MEMORY_SIZE_NAME),
        text   = STRING_TOKEN(STR_MEMORY_SIZE_VALUE),
        flags  = 0,
        key    = 0;
	Definitions:
		help: help strings.
		text: Text string in left side.
		text: Text string value in right side, usually will be updated in each boot.
		flags: used for special control, like dynamic text.
		key: used for special control.

subtitle->text,相当于分支,这种就是单纯的显示字符串,不可更改

subtitle text = STRING_TOKEN(STR_SUB_TITLE);
   
    text 
        help   = STRING_TOKEN(STR_MEMORY_SIZE_HELP),
        text   = STRING_TOKEN(STR_MEMORY_SIZE_NAME),
        text   = STRING_TOKEN(STR_MEMORY_SIZE_VALUE),
        flags  = 0,
        key    = 0;

checkbox & endcheckbox

用于创建一个复选框,让用户选择是或否,需要将其置于表单和结束表单之间。

 checkbox varid  = SETUP_DATA.OnboardVGA,
        prompt = STRING_TOKEN(STR_ONBOARD_VGA_PROMPT),
        help = STRING_TOKEN(STR_ONBOARD_VGA_PROMPT_HELP),
        flags = 1, 
    endcheckbox;


Definitions:
		varid: reference variable for this checkbox question.
		prompt: name for the checkbox.
		help: help strings.
		flags: default value for this question, 1=On 0=Off.

oneof & endoneof

用于创建具有更多选择的选项

oneof varid   = SETUP_DATA.Value,
        prompt    = STRING_TOKEN(STR_PROMPT),
        help      = STRING_TOKEN(STR_HELP),
        option
            text  = STRING_TOKEN(STR_OPTION1),
            value = 0,
            flags = DEFAULT;
        option
            text  = STRING_TOKEN(STR_OPTION2),
            value = 1,
            flags = 0;
    endoneof;
	Definitions:
		varid: variable which referenced by this question.
		prompt: question name string.
		help: help strings for this question.
		option: option start syntax.
		text: text strings for this option.
		value: variable value, which will be write into NVRAM.
		flags: used to define the state for this option, 0 means nothing, set to 				DEFAULT will let this option become a default setting.

 grayoutif & suppressif

用于item的变灰不可选以及是否隐藏

ideqval:如果变量的值等于某个值,则表示变灰或者隐藏。

以endif结束

suppressif ideqval SETUP_DATA.UsbLockHide == 1;
            oneof   varid   = SETUP_DATA.Usb,
              prompt = STRING_TOKEN(STR_ALL_USBPORTS_PROMPT),
              help= STRING_TOKEN(STR_ALL_USBPORTS_HELP),
              option 
				text = STRING_TOKEN(STR_DISABLE), 
			  	value=1,
              	flags=0 | RESET_REQUIRED;
              option 
				text = STRING_TOKEN(STR_ENABLE), 
				value=0,
 				flags=DEFAULT | MANUFACTURING | RESET_REQUIRED;
            endoneof;
        endif;

numeric & endnumeric

用于创建允许用户输入数字的字段,也就是说可以设置数字,不过最多不大于65535

numeric varid = TIMEOUT.Value,
            prompt    = STRING_TOKEN(STR_BOOT_TIMEOUT),
            help      = STRING_TOKEN(STR_BOOT_TIMEOUT_HELP),
            minimum   = 0x1,
            maximum   = 0xffff,
            step      = 1,
            default   = DEFAULT_BOOT_TIMEOUT,
        endnumeric;
	Definitions:
		prompt: Name string for this question.
		help: help string for this question.
		minimum: minimum number of this question.
		maximum: maximum number of this question.
		step: step for this question.
		default: default value.

password & endpassword

用于为输入密码创建字段

 password varid  = AMITSESETUP.AdminPassword,
           prompt      = STRING_TOKEN(STR_ADMIN_PASSWORD),
           help       = STRING_TOKEN(STR_ADMIN_PASSWORD_HELP),
           flags       = 0,
           minsize     = 0,
           maxsize     = PASSWORD_MAX_SIZE,
           encoding    = 1,
       endpassword;
	Definitions:
		minsize: minimum length for the password.
		maxsize: maximum length for the password.
		encoding: encoding or not, 1 = enable encoding.

LABEL

用于指向VFR文件中的地址,然后DXE驱动程序可以在VFR文件中的指定位置动态添加或修改item。

label LABEL_NETWORK_DEVICE_LIST_ID;
label LABEL_END;

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u011397314/article/details/121608095

智能推荐

IDEA报错:log4j:WARN No appenders could be found for logger (org.mybatis.generator.internal.db.Databas)_cici未完成的拼图的博客-程序员ITS304

报错信息:log4j:WARN No appenders could be found for logger (org.mybatis.generator.internal.db.DatabaseIntrospector).log4j:WARN Please initialize the log4j system properly.log4j:WARN See http://logging...

Vue 模板是如何编译的_前端同学的博客-程序员ITS304_vue模板编译

认识模板编译我们知道 <template></template> 这个是模板,不是真实的 HTML,浏览器是不认识模板的,所以我们需要把它编译成浏览器认识的原生的 HTML这一块的主要流程就是提取出模板中的原生 HTML 和非原生 HTML,比如绑定的属性、事件、指令等等经过一些处理生成 render 函数render 函数再将模板内容生成对应的 vnode再经过 patch 过程( Diff )得到要渲染到视图中的 vnode最后根据 vnode 创建真实的 DOM

sota结果是什么意思_只有达到SOTA的方法才能发文章吗_weixin_39743369的博客-程序员ITS304

最近关注了一个问题:只有达到 state of the art 精度的方法才能发文章吗?得赞同最多的回答分享了ICML审稿人的话,说的非常好:The academic is not an army race. It does not really matter how fancy the model is. It does not really matter whether the model c...

浙江工商大学和杭电计算机哪个好,浙江工业大学、杭电、浙江理工大学、浙江工商大学哪所值得报考?..._Clarlie的博客-程序员ITS304

有人问,浙江工业大学、杭州电子科技大学、浙江工商大学和浙江理工大学,哪个学校更值得选择?这4所大学都是浙江省的普通高校。不过,这几所大学的实力并不太弱,也许要好于部分211大学。原因是,浙江的高等教育跟它的教育强省地位不符合。浙江只有浙大一所985兼211大学。在双一流名单里,也只有3所学校上榜,除了浙大,还有宁波大学和中国美术学院。中国美院实力很强,但属于艺术类学校,对大部分考生不适合。综合性院...

[SPI]SPI协议详解_weixin_30539625的博客-程序员ITS304

转自:https://my.oschina.net/freeblues/blog/674001.SPI协议简介1.1.SPI协议概括  SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信...

JDK、JRE和JVM之间的关系_Sun-yz的博客-程序员ITS304_jdk jre jvm三者之间的关系

作为一个Java开发者,只会用Java,却不知什么是JDK、JRE和JVM是什么,以及他们之间有什么联系。本文总结了JDK,JRE,JVM三者的关系与区别。JDK、JRE和JVM之间的关系一、JDK二、JRE三、JVM四、三者的联系五、三者的区别六、总结一、JDKJDK是Java开发工具包,其中包括编译工具(javac.exe)打包工具(jar.exe)等,也包括JRE。在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工.

随便推点

python调用scikit-fuzzy实现简单模糊逻辑控制的说明(一)_sweet_Chanyelo的博客-程序员ITS304_模糊逻辑python实现

一直想要实现用python编写一个模糊控制器,自己尝试了很久发现还(zhu)是(yao)很 (shi) 难(lan),不过终于找到了可以直接调用的现成的模糊控制库scikit-fuzzy,看起来和scikit-learn 很像,也看了几个大佬的博客,发现功能还是比较简单,能处理的问题也十分有限。1.案例说明这里同样采用一个大佬常用来说明的案例进行说明,其中由2个输入,1个输出,每个输入设置3个参考值,因此共9条规则,相应的规则矩阵如下表输入参考值NMPNN`MMM

什么是WAP网关? _iteye_5823的博客-程序员ITS304

1. 什么是WAP网关?WAP网关是一个软件。它连接Internet或者Intranet,使得WAP电话可以来访问其中的资源。有些网关可能具有将HTML文件转换为WML页面的功能。WAP网关在WAP设备与Web服务器之间的连接中有好多功能。这些功能基本上是:将标记语言(WML)从文本转换成可以被WAP设备读懂的编码(二进制/压缩的)格式; 将WAP设备的请求转换成Web中的HT...

SpringBoot接口返回图片_前端的哭的博客-程序员ITS304_springboot 返回图片

使用 ResponseEntity 返回结果,设置HttpHeader中的content-type,如:image/[email protected](method = RequestMethod.GET)public ResponseEntity getFile(@RequestParam long id) { Result result = fileService.getFile(id); if (result.getCode() == 1) { MediaTy..

Stata:聚类标准误的纠结_arlionn的博客-程序员ITS304_聚类标准误

全文阅读:Stata:聚类标准误的纠结| 连享会主页目录1.背景介绍 1.1 聚类还是不聚类,这是一个问题 1.2 如果本应该聚类,但没有聚类会怎样 2.实操准备 2.1 模拟设置 2.2 主要程序 3. 主要结果 3.1 不同情况下的结果对比 3.2 基本结论 4.参考资料 5. 相关推文 本文主要编译自下文:Source:To cluster or not to cluster 1.背景介绍1.1 聚类还是不聚类,这是一个问题.

【Unity3d】用RenderTexture实现粘液拖尾_新媒体的博客-程序员ITS304_unity 粘液

利用Render Texture可以模拟实现影子,同样的使用Render Texture也可以实现虫子等物体经过时在其他物体上留下的粘液痕迹效果(别问我为什么要做这么恶心的东西,罪恶之源是teamlab,模仿的这个团队做的一个效果)。首先在物体正上方新建一个摄像机负责观察物体截取RenderTexture,这里使用了之前讲过的透明窗体的脚本将物体以外的画面颜色抠掉。使用方法见【Unity3d】窗体透

Eclipse下NDK开发与调试_dj0379的博客-程序员ITS304

Eclipse下NDK开发一、关于NDK:NDK全称:Native Development Kit。 1、NDK是一系列工具的集合。 NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和Java应用一起打包成apk。这些工具对开发者的帮助是巨大的。 NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简