EDK2 中的指南与协议
Guids vs. Protocols in EDK2
我试图了解 EDK2 模块的包声明文件 (.dec) 中的不同部分,但我似乎无法弄清楚为什么一些 GUID 定义在 [GUIDs] 部分下,而有些是在 [Protocols] 部分或 [Ppis] 部分下。为什么它们不应该在同一部分下,特别是从 EDK2 构建过程的角度来看,有什么原因吗?
所以,这最多是一半的答案,但是:
GUID 最终不过是一个 128 位值,在统计上保证是唯一的(如果使用定义的方法生成)。
.dec
的 [Guids]
部分定义了指向通用数据结构、变量命名空间、事物的 GUID...
[Protocols]
部分定义了可发现的 UEFI API,而 [Ppis]
定义了 PEI (Pre-EFI) API。
最终,这在处理模块 .inf
文件时变得相关,这些文件声明了它们需要构建的 [Guids]、[Protocols] 和 [Ppis]。即,您可能只需将所有内容声明为 GUID 就可以逃脱 - 但随后您将失去任何健全性检查,从而阻止您在 DXE 中使用 PPI,反之亦然。
我试图了解 EDK2 模块的包声明文件 (.dec) 中的不同部分,但我似乎无法弄清楚为什么一些 GUID 定义在 [GUIDs] 部分下,而有些是在 [Protocols] 部分或 [Ppis] 部分下。为什么它们不应该在同一部分下,特别是从 EDK2 构建过程的角度来看,有什么原因吗?
所以,这最多是一半的答案,但是:
GUID 最终不过是一个 128 位值,在统计上保证是唯一的(如果使用定义的方法生成)。
.dec
的 [Guids]
部分定义了指向通用数据结构、变量命名空间、事物的 GUID...
[Protocols]
部分定义了可发现的 UEFI API,而 [Ppis]
定义了 PEI (Pre-EFI) API。
最终,这在处理模块 .inf
文件时变得相关,这些文件声明了它们需要构建的 [Guids]、[Protocols] 和 [Ppis]。即,您可能只需将所有内容声明为 GUID 就可以逃脱 - 但随后您将失去任何健全性检查,从而阻止您在 DXE 中使用 PPI,反之亦然。