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