2022-10-14 UEFI学习笔记(三)

UEFI学习笔记(三)

UEFI中的Protocol

Protocol在UEFI内核中的表示

每个设备就是一个EFI_HANDLE;
所有的HANDLE通过AllHandles链接起来;
IHANDLE的Protocols是双向链表,每个元素都是PROTOCOL_INTERFACE;
通过PROTOCOL_INTERFACE中的Protocol指针可以得到GUID;

如下图:
在这里插入图片描述

如何使用Ptorocol服务

使用Protocol的三个步骤:

  1. gBS->OpenProtocol (或者HandleProtocol、LocateProtocol) 找出Protocol对象
  2. 使用这个Protocol提供的服务
  3. gBS->CloseProtocol 关闭Protocol
  4. 如果想知道某个Protocol被哪些设备打开了,可以使用OpenProtocolInformation服务
OpenProtocol服务

用于查询指定的Handle中是否支持指定的Protocol,如果支持则打开该Protocol,不支持则返回错误码

HandleProtocol服务

OpenProtocol使用起来比较复杂,参数较多,如果开发者只想通过Protocol的GUID得到Protocol对象,启动服务提供HandleProtocol以简化打开Protocol。HandleProtocol就是OpenProtocol的简化版

LocateProtocol服务

从UEFI内核中找出指定Protocol的第一个实例

LocateHandleBuffer服务

上面的服务是从设备上找出Protocol,这个服务是找出系统中所有安装了Protocol的设备,系统分配内存,调用者释放内存;
LocateHandle也是一样的功能,区别是需要调用者负责分配和释放内存

ProtocolPerHandle服务

用于获取指定设备所支持的所有Protocol

OpenProtocolInformation服务

用于获取指定设备上指定Protocol的打开信息

CloseProtocol服务

Protocol使用完之后要关闭

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值