UEFI Protocol
Protocol是服务器和客户端的一种约定,他们按照这种约定互通信息。 UEFI使用C语言实现的但是Protocol使用了面向对象的思想。用struct模拟class,用函数指针模拟成员函数,此种函数第一个参数必须是指向Protocol的指针模拟this。
每个Protocol必须有一个GUID,可以根据GUID来寻找Protocol。成员函数的第一个参数是指向所属Protocol的this指针,这也是成员函数区别于一般函数的重要特征。
EFI_HANDLE是指向某种对象的指针,UEFI扫描总线后会为每个设备建立一个controller对象,用于控制设备,所有该设备的驱动以Protocol的形式安装到这个controller之中,这个controller就是EFI_HANDLE。
每个EFI_HANDLE都有一个Protocols链表用来存放Protocol,所有HANDLE通过AllHandles连接起来。Protocols是一个双向链表链表中存放PROTOCOL_INTERFACE,通过PROTOCOL_INTERFACE的Protocol指针可以找到对应的GUID。
使用OpenProtocol HandleProtocol LocateHandle三种服务用于找出指定的 Protocol。
Open用于打开指定句柄上的Protocol,Handle是简化版的Open,Locate用于找出指定Protocol在系统中的第一个实例,一般要使用服务需要得到设备的句柄而找句柄并不是很容易,而不在意Protocol在哪个设备上时可使用Locate服务。
使用Protocol:
1.使用gBS->O、H、L(其中一个)找出Protocol对象
2.使用其提供的服务
3.通过gBS->CloseProtocol关闭。
LocateHandleBuffer和LocateHandle服务提供找到支持某个Protocol设备的服务。函数有三种SearchType:1.AllHandles用于找到系统中的所有Handle;2.ByRegisterNotify用于在RegisterNotify中找出匹配SearchKey的Handle;3.ByProtocol用于从系统Handle数据库中找到支持指定Protocol的Handle。
UEFI Protocol相关推荐
- UEFI——protocol服务详解
文章目录 InstallProtocolInterface CoreInstallProtocolInterfaceNotify 输入参数 入参判断 CoreHandleProtocol CoreOp ...
- 【Android SDM660源码分析】- 01 - 如何创建 UEFI XBL Protocol DXE_DRIVER 驱动及UEFI_APPLICATION 应用程序
[Android SDM660源码分析]- 01 - 如何创建 UEFI XBL Protocol DXE_DRIVER 驱动及UEFI_APPLICATION 应用程序 一.创建DXE_DRIVER ...
- 【Android SDM660源码分析】- 03 - UEFI XBL GraphicsOutput BMP图片显示流程
[Android SDM660源码分析]- 03 - UEFI XBL GraphicsOutput BMP图片显示流程 1. GraphicsOutput.h 2. 显示驱动初化 DisplayDx ...
- 「RISC-V Arch」RISC-V 规范结构
日期:20230228 规范分类 根据 RISC-V 设计哲学,其规范文档也是高度模块化的: ISA 规范(2 篇) 非特权规范 特权规范 非 ISA 规范(6篇) Trace规范 ABI 规范 外部 ...
- udk开发-稀里糊涂
一.EDK2简介 1.EDK2工作流 二.EDK2 Packages 1.Packages介绍 EDK2 Packages是一个容器,其中包含一组模块及模块的相关定义.每个Package是一个 ...
- BIOS知识枝桠——Device Path
EFI Device Path 定义&原型 文本表示形式 EFI Device Path种类 Hardware Device Path ACPI Device Path Messaging D ...
- 【GRUB】GRUB2代码初步解析
目录说明 使用GRUB版本2.02,目录如下(非完全,还有文件没有包含): asm-tests:这里面是几个汇编代码文件,似乎没有什么用: build-aux:包含了编译时可能用到的脚本: conf: ...
- EDK II Module Writers Guide下
三.常见UEFI Module类型 1.UEFI APP UEFI Application是EFI_IMAGE_SUBSYSTEM_EFI_APPLICATION类型的EFI Image. UEF ...
- 【我所认知的BIOS】—gt; uEFI AHCI Driver(5) — 第一个protocol最终要開始安装了
[我所认知的BIOS]-> uEFI AHCI Driver(5) - 第一个protocol最终要開始安装了 LightSeed 4/28/2014 文章对EFI_DRIVER_BINDING ...
最新文章
- linux命令端口探测
- java tf值搜索_搜索引擎优化 TF_IDF之Java实现
- WIFI只sta和ap建立连接的过程
- openresty开发系列30--openresty中使用http模块
- 函数_月隐学python第9课
- 常见DDoS技术方法和对应防御措施
- linux下mysql 有双机_在Linux环境下配置mysql cluster双机集群
- HTML5的新特性(1) -pattern
- jQuery实现锚点滑动定位
- 【复习+知识补充】EL表达式:只能调用静态方法
- java内嵌html5浏览器_Jcef内嵌浏览器windows版本的编译及使用
- java压缩和解压ZIP和RAR文件踩坑实践
- word转html,word转pdf
- 融云会话界面自定义功能_Android快速集成融云
- 2022年团体程序设计天梯赛记录(部分题解)
- 使用开源的协同办公OA项目,实现规范高效的公文管理
- 移动端web设计尺寸_手机移动端网页按钮设计尺寸及间距规范
- 前段听一个仁兄说jbpm4 改变了很多
- RuntimeError: CUDA out of memory. Tried to allocate 6.38 GiB (GPU 0; 10.76 GiB total capacity; 708.0
- 【题解】 [SCOI2012]滑雪