为什么UEFI协议头文件为单个协议GUID定义宏和外部全局变量?

时间:2015-08-22 10:51:54

标签: c macros uefi

我是UEFI(统一可扩展固件接口)开发的新手。我正在使用EDK(EFI开发套件)。

要创建新协议,我们需要为协议提供GUID。例如,在BlockIO协议的头文件中,我们可以看到:

(MdePkg \包括\ BlockIo.h)

宏: enter image description here

全局变量:

enter image description here

在包声明文件MdePkg.dec中:

enter image description here

为什么我们需要其中3个为协议提供GUID?

(也许这个问题与C语言细节有关,因此我也添加了cmacros标签。)

1 个答案:

答案 0 :(得分:0)

全局变量只能由链接到定义它的对象的驱动程序使用(在您的情况下为BlockIo.c)。我认为宏是在头文件中定义的,因此不与该对象链接的驱动程序可以使用宏中的GUID。