如何理解UEFI中handle和protocol的概念

UEFI中到处都会出现Handle和Protocol这两个概念,这个对于理解UEFI的设计思路还是很重要的,但是翻遍了UEFI spec,并没有给出很清晰的概念。后来干脆去翻源码的定义,立马有种拨云见日的感觉。

 

基本上,protocol代表的是一种用定义好了的数据结构,每个protocol都有唯一的ID(128bit的GUID,也可以理解为protocl的名字),可以通过这个GUID去locate到相应的protocol。这样protocol的生产者和使用者之间就能够通过GUID建立起连接,使用者只要知道protocol的数据结构及相应的GUID就可以去locate并使用这个protocol。每个protocol包含两部分,即一个PROTOCOL_ENTRY和N个PROTOCOL_INTERFACE,这N个PROTOCOL_INTERFACE有点类似于C++中的类实例(如下图所示)。

 

handle的概念就有点虚了,经常会看到driver handle,device handle, image handle等等。可以将handle理解为一个逻辑的设备,这个逻辑设备将N个有关联的protocol interface组合到一起,方便于UEFI管理。一般如果我们说driver/device/image handle指的是这个handle是某个driver/device/image的一个抽象.


handle和protocol的关系如下,首先UEFI会用一个链表将所以的handle连接起来,一个handle下面可以挂N个protocol,同一个protocol可以install到多个handle上。如果在install protocol的时候没有指定handle,则会创建一个新的handle。

  • 11
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值