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,反之亦然。