Handle Database
Handle Database是由Handles和Protocols组成的,它是全局的,可以被任何UEFI Image访问。在执行完ExitBootServices()之后,Handle Database就不存在了。
Handle
Handles由一个或多个Protocol组成。
在EFI的初始化过程中,System firmware/UEFI Drivers/UEFI Applications都会创建Handles,并为每个handle挂上一个或多个Protocol。
Boot Service HandleProtocol()和OpenProtocol()是用来在给定的Handle中查找Protocol的。
Handle Type:
Protocol
Protocols是由GUID来命名的数据结构体,它可能是空,可能包含数据,可能包含服务程序,或者同时包含两者。
每个Protocol都必须包含以下三个方面:
1>. The Protocol's Global Unique ID(GUID)
2>. The Protocol Interface Structure
3>. The Protocol Service
一个UEFI Driver里包含用于实现一个或多个Protocol的Function,并且通过Boo tService InstallProtocolInterface()来注册(Register)。The firmware返回这个Protocol的Interface,这个Interface可以被用来调用(Invoke)这个Protocol的特定的服务(specific services)。
这样,Protocol这种机制就实现了UEFI固件扩展的功能。